gpt4 book ai didi

excel - 使用powershell查找word和excel文档的最后保存者

转载 作者:行者123 更新时间:2023-12-03 01:14:34 26 4
gpt4 key购买 nike

我有一个包含子文件夹的文件夹,我想运行一个 powershell 脚本来查找所有 Office 文档(目前为 Word 和 Excel 2003、2007 和 2010)并打印我们可以找到的“上次保存者”属性在文件的属性、详细信息选项卡上。

有人可以帮忙吗?

---解决方案---

$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 中,该属性本身是动态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 { }
}

只需打印 $pn 变量即可获取所有可用属性的名称。

关于excel - 使用powershell查找word和excel文档的最后保存者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com