我是Powershell的新手,我正在尝试使用它来打开现有的.htm文件,然后通过XPath从该文件中获取一些值,然后在其他地方使用。
这是我目前使用脚本的地方:
$localHtmlFile = 'myfile.htm'
$html = New-Object -com "HTMLFILE"
$html.write((Get-Content $localHtmlFile | Out-String))
$html.AllElements |
Where XPath -eq "html/body/h4[1]/strong" |
Select -First 1 -ExpandProperty innerText
我遇到的问题是我在运行时遇到以下错误:
使用“1”参数调用“write”的异常:“类型不匹配
我尝试了多个.htm文件。我正在使用Powershell v4.0。
有什么想法吗?我确信这是显而易见的,但我无法理解它。此外,我还没有设法测试XPath部分,因为我无法超越写入异常。所以我不完全确定代码是否正确。
非常感谢。
答案 0 :(得分:3)
假设您的myfile.htm是有效的XML文档,您可以使用Select-XML
cmdlet查询XML树中的节点。
例如,如果你的myfile.htm是这样的
<html>
<head>
<title>Test</title>
</head>
<body>
<h4><strong>My First Heading</strong></h4>
</body>
</html>
然后您可以使用h4
Select-XML
的内容
PS C:\> $h4txt = (Select-Xml -Path .\myfile.htm -XPath //body/h4).Node.InnerText
PS C:\> $h4txt
My First Heading
您可以在选择
上参考here获取XPath示例希望有所帮助!