如何从PowerShell获取xml文件中的一些内容?

时间:2011-08-03 11:17:12

标签: powershell xml

变量$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类,好像我错了。那我该怎么办呢?

4 个答案:

答案 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)