小编use*_*818的帖子

PowerShell从具有多个属性的XML获取属性值

以下XML文件是从带有PowerShell 2的2008 R2故障转移群集运行的命令Get-ClusterGroup的输出的一个Object节点:

<?xml version="1.0"?>
<Objects>
  <Object>
    <Property Name="Cluster">Cluster1</Property>
    <Property Name="IsCoreGroup">False</Property>
    <Property Name="OwnerNode">Node1</Property>
    <Property Name="State">Offline</Property>
    <Property Name="Name">SAP PL1</Property>
    <Property Name="Description" />
    <Property Name="PersistentState">1</Property>
    <Property Name="FailoverThreshold">4294967295</Property>
    <Property Name="FailoverPeriod">6</Property>
    <Property Name="AutoFailbackType">1</Property>
    <Property Name="FailbackWindowStart">4294967295</Property>
    <Property Name="FailbackWindowEnd">4294967295</Property>
    <Property Name="Priority">1</Property>
    <Property Name="DefaultOwner">4294967295</Property>
    <Property Name="AntiAffinityClassNames" />
    <Property Name="Id">a5ff557f-c81a-43aa-bdb9-e09d0a1103df</Property>
  </Object>
</Objects>
Run Code Online (Sandbox Code Playgroud)

完整文件还有三个与此类似的Object节点.其中两个节点在"IsCoreGroup"属性中的值为"False",另外两个节点为"True".我想要做的是从"IsCoreGroup"属性中具有值"False"的Object节点获取"Name"属性的值和其他属性.

我已经尝试了很多方法来获取此属性,但无法弄清楚如何深入研究兄弟属性.

这是我到目前为止所拥有的:

[xml]$file = get-content C:\Admin\ClusterGroups.xml
$xmlProperties = $file.SelectNodes("/Objects/Object/Property")
Foreach ($xmlProperty in $xmlProperties) {
    $strName = ($xmlProperty | Where-Object {$_.Name -eq "IsCoreGroup" }).InnerXml
    If ($strName -eq "False")
    {
    Echo $xmlProperty
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容:

Name                                      #text …
Run Code Online (Sandbox Code Playgroud)

xml powershell siblings

6
推荐指数
1
解决办法
5万
查看次数

标签 统计

powershell ×1

siblings ×1

xml ×1