变量$returnedxml
是在xml中形成的sql查询结果。我需要从中获取内容'releasepath'\\sharespace\test1\\10.0.1212.00
<ReleasePath>\\sharespace\test1\\10.0.1212.00</ReleasePath>
以下是我的代码:
$xmldoc= new-object xml.xmldocument
$xmldoc.load($Returnedxml)
$xmldoc.releasepath
以下是返回的错误警报:
Exception calling "Load" with "1" argument(s): "Could not find file 'C:\Users\admin\System.Xml.XmlDocument'."
At D:\connecttods3andinvoke.ps1:47 char:14
+ $xmldoc.load <<<< ($Returnedxml)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
我认为xml.xmldocument是一个.net类,好像我错了。那我该怎么办呢?
答案 0 :(得分:4)
由于XML数据的处理对于如此多的管理任务来说是不可或缺的,因此Powershell具有XML类型加速器。所以这也可行:
[xml]$xmldoc = $returnedxml
$xmldoc.releasepath
答案 1 :(得分:2)
我只是把它读成一个字符串......
$file = [IO.File]::ReadAllText($filename)
然后使用xpath从中获取值...
$releasePath = $file | SelectXml "//ReleasePath"
XPath对于从XML文件中提取内容非常有用,比使用xmldoc更简单(编码方式)
答案 2 :(得分:1)
您的变量$Returnedxml
必须是具有绝对路径的文件名。但目前它是类System.Xml.XmlDocument
的对象。
因此,更改您的变量,然后您就可以阅读该文件。
或者另一方面,如果您已在$Returnedxml
中拥有XmlDocument对象,则无需将其读入$xmldoc
。两者都来自同一个班级。只需使用$ Returnedxml
答案 3 :(得分:0)
你使用的是错误的负载;那是一个文件。请改用LoadXML
:
$xmldoc.LoadXml($Returnedxml)