我上周问了这个问题,我的脚本找不到任何要更改的超链接。现在我正在备份并尝试简单地打开一个文档并列出其中的超链接。我已经验证该文档包含指向同一文档中多个锚点的超链接,以及指向同一目录中文档的两个超链接。但是,要么 Powershell 没有在文档中找到链接,要么我不正确地将列表输出到控制台。
这是我的基本代码
$word = New-Object -ComObject Word.Application
$doc ="R:\path\Reporting_Emergency_Or_Hazardous_Situation_-_BC_CC.doc"
$hyperlinks = @($doc.Hyperlinks)
$hyperlinks
$word.quit()
或者,对于第 4 行
Write-Host $hyperlinks
或者,再次为第 4 行
$hyperlinks | % {Write-Host $_.address}
没有错误,只是空白结果。甚至没有对$hyperlinks
数组的对象引用。
当我将第 4 行修改为
% $address in $hyperlinks {
Write-Host $._address
}
我收到以下错误...但不清楚我是否正在尝试读取空数组?或者如果该值为空白。
ForEach-Object : Cannot bind parameter 'Process'. Cannot convert the "in" value of type "System.String" to type "System.Management.Automation.ScriptBlock".
At F:\path\HyperLinkScrub.ps1:46 char:2
+ % <<<< $address in $hyperlinks {
+ CategoryInfo : InvalidArgument: (:) [ForEach-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand
我在这里想念什么?我已经验证 Word 文档具有超链接,最终,我试图诊断我的脚本是否没有正确查找它们,或者我没有正确地将它们输出到控制台。