我找到了多个代码片段来滚动浏览文件夹并显示文件夹中每个项目的元数据,如下所示:
function funLine($strIN)
{
$strLine = "=" * $strIn.length
Write-Host -ForegroundColor Yellow "`n$strIN"
Write-Host -ForegroundColor Cyan $strLine
}
$sfolder = "S:\Temp"
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.namespace($sFolder)
foreach ($strFileName in $objFolder.items())
{funline "$($strFileName.name)"
for ($a ; $a -le 266; $a++)
{
$a
if($objFolder.getDetailsOf($strFileName, $a))
{
$hash += @{ $($objFolder.getDetailsOf($objFolder.items, $a)) = $a.tostring() + $($objFolder.getDetailsOf($strFileName, $a)) }
$hash | out-file c:\temp\output.txt -Append
$hash.clear()
}
}
$a=0
}
但在我的脚本中,我想使用 Get-ChildItem 遍历文件夹,对于选定的文件,我想使用 getDetailsOf() 来提取 MS Office 文档的作者。
那么,知道文件名(例如:$strFileName,我可以跳过 $objFolder.items() 中的每个 $strFileName 的循环,而只访问 $sFileName 的作者的元数据详细信息(其中 $a = 20)吗?
我已经看到它是使用“New-Object -ComObject word.application”完成的,但我相信它会打开文档,所以在一个有许多文件被用户锁定的大型文件系统上,这可能会很慢而且很痛苦。
我可以直接跳到我选择的文件名的 $objFolder.items() 的索引吗?