9

ハッシュ テーブルを使用してプロパティ値を設定し、PowerShell で新しいオブジェクトを作成しています。次に、ConvertTo-XML メソッドを使用してオブジェクトを XML 形式にエクスポートします。

$hash = @{            
    Processor = 'Intel'                
    Disk = '500GB'
    Server = 'ABC'
    Serial = '01234'
}                           

$specs = New-Object PSObject -Property $hash
Write-Output ($specs | ConvertTo-XML -notypeinformation).Save("C:\scripts\export.xml")

XML 出力は次のとおりです。

<Objects>
  <Object>
    <Property Name="Serial">a1b2c3</Property>
    <Property Name="Server">ABC</Property>
    <Property Name="Processor">Intel</Property>
    <Property Name="Disk">500GB</Property>
  </Object>
</Objects>

私が望むのは、XML タグを次のようにフォーマットすることです。

<Objects>
  <Object>
    <Serial>a1b2c3</Serial>
    <Server>ABC</Server>
    <Processor>Intel</Processor>
    <Disk>500GB</Disk>
  </Object>
</Objects>

そして、そのための良い解決策があれば、オブジェクトタグもカスタムにする方法はありますか?

ありがとうございました。

4

5 に答える 5

8

ではそこにたどり着けないと思いますConvertTo-Xml。ただし、here stringsこれを行うために使用できます。それは一種のローテクですが、それでもかなりクールです。

$hash = @{            
    Processor = 'Intel'                
    Disk = '500GB'
    Server = 'ABC'
    Serial = '01234'
}                           

@"
<Objects>
  <Object>$(foreach ($kvpair in $hash.GetEnumerator()) {
    "`n    <$($kvpair.Key)>$($kvpair.Value)</$($kvpair.Key)>"
})
  </Object>
</Objects>
"@ > C:\scripts\export.xml

を使用してこのドキュメントを作成することもできますが、それはより多くの作業になります。このような単純なドキュメントの場合、このアプローチはかなりうまくいくXML DOMと思います。here stringまた、あらゆる種類のテキスト テンプレートにも適しています。

于 2013-11-12T17:37:57.650 に答える
0

あなたが私のような人で、1行の答えを理解できない場合は、ここで展開されています。

$specs | ForEach-Object `
    -begin {'<Objects>'} `
    -process {$_.psobject.properties | ForEach-Object `
        -begin {'  <Object>'} `
        -process {"    <$($_.name)>$($_.value)</$($_.name)>"} `
        -end {'  </Object>'} } `
    -end {'</Objects>'} | out-file "C:\scripts\export.xml"
于 2022-01-28T11:08:58.383 に答える