先週この質問をしましたが、変更するハイパーリンクがスクリプトで見つかりません。今、私はバックアップして、1 つのドキュメントを開いて、その中のハイパーリンクを一覧表示しようとしています。ドキュメントには、同じドキュメント内の多数のアンカーへのハイパーリンクと、同じディレクトリ内のドキュメントへの 2 つのハイパーリンクが含まれていることを確認しました。ただし、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
}
次のエラーが表示されます...しかし、null 配列を読み取ろうとしているかどうかは不明ですか? または値が空白の場合。
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 ドキュメントにハイパーリンクがあることを確認しました。最終的には、スクリプトがハイパーリンクを適切に検索していないか、コンソールに適切に出力していないかを診断しようとしています。