用powershell查找最后保存的word和excel文件

我有一个文件夹与子文件夹,我想要运行一个PowerShell脚本,find所有的办公文件(单词和Excel 2003,2007和2010年),并打印“最后保存”属性,我们可以find属性,文件的详细信息选项卡。

任何人都可以帮忙吗?

—解决scheme—

$word = New-Object -Com Word.Application $word.Visible = $false #to prevent the document you open to show $doc = $word.Documents.Open($path) $binding = "System.Reflection.BindingFlags" -as [type] Foreach($property in $doc.BuiltInDocumentProperties) { try { $pn = [System.__ComObject].invokemember("name",$binding::GetProperty,$null,$property,$null) if ($pn -eq "Last author") { $lastSaved = [System.__ComObject].invokemember("value",$binding::GetProperty,$null,$property,$null) write-host "Last saved by: "$lastSaved } } catch { } } $doc.Close() $word.Quit() 

对正确的答案做了一些调整,现在它正在工作。

这不像人们所希望的那么容易。 您可以使用Powershell轻松打开Word文档

 $word = New-Object -COM Word.Application $word.Visible = $false #to prevent the document you open to show $doc = $word.Document.Open("path-to-document") 

但是文档属性存储在属性BuiltInDocumentProperties中,这些属性本身就是dynamic的COM对象(因此不是直接可用的)

我使用的方法是遍历每个这些属性,然后检索值:

 $binding = "System.Reflection.BindingFlags" -as [type] Foreach($property in $doc.BuiltInDocumentProperties) { try { $pn = [System.__ComObject].invokemember("name",$binding::GetProperty,$null,$property,$null) if ($pn -eq "Last save time") { $lastSaved = [System.__ComObject].invokemember("value",$binding::GetProperty,$null,$property,$null) } } catch { } } 

您只需打印$ pnvariables即可获取所有可用属性的名称。