How do I use Powershell to print a list of hyperlinks that appear in a Word document?
- by dwwilson66
I asked this question last week, and my script cannot find any hyperlinks to change. Now I'm backing up and trying to simply open a single document and list the hyperlinks within. I've verified that the document includes hyperlinks to a number of anchors in the same document, and two hyperlinks to documents in the same directory. However, either Powershell isn't finding links in the doc or I'm outputting the list to the console improperly.
Here's my bare-bones code
$word = New-Object -ComObject Word.Application
$doc ="R:\path\Reporting_Emergency_Or_Hazardous_Situation_-_BC_CC.doc"
$hyperlinks = @($doc.Hyperlinks)
$hyperlinks
$word.quit()
or, for line 4
Write-Host $hyperlinks
or, again for line 4
$hyperlinks | % {Write-Host $_.address}
No errors, just blank results. Not even an object reference to the $hyperlinks array.
When I modify line 4 to
% $address in $hyperlinks {
Write-Host $._address
}
I get the following error...but it's unclear if I'm trying to read a null array? or if the value is blank.
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
What am I missing here? I've verified that the Word doc has hyperlinks, and ultimately, I'm trying to diagnose if my script isn't looking for them properly, or if I'm not outputting them to the console properly.