7

次の XML ファイルは、PowerShell 2 を使用して 2008 R2 フェールオーバー クラスターから実行されたコマンド Get-ClusterGroup からの出力の 1 つのオブジェクト ノードです。

<?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>

完全なファイルには、これと同様のオブジェクト ノードがさらに 3 つあります。これらのノードのうち 2 つは「IsCoreGroup」属性の値が「False」で、他の 2 つは「True」です。私がやろうとしているのは、「IsCoreGroup」属性に「False」の値を持つオブジェクトノードから「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
    }
}

これにより、次のことがわかります。

Name                                      #text                                    
----                                      -----                                    
IsCoreGroup                               False      

しかし、兄弟のプロパティを取得する方法がわかりません

私はレベルをバックアップしようとしました:

[xml]$file = get-content C:\Admin\ClusterGroups.xml
$xmlObjects = $file.SelectNodes("/Objects/Object")
Foreach ($xmlObject in $xmlObjects) {
    $strCoreGroup = ($xmlObject | Where-Object {$_.Property.Name -eq "IsCoreGroup" }).InnerXml
    If ($strCoreGroup -eq "False")
    {
    Echo $xmlObject
    }
}

しかし、それは私をどこにも連れて行きません。

どんな助けでも大歓迎です!

4

1 に答える 1