PowerShellでオブジェクトをXML形式に変換!ConvertTo-Xmlの使い方を徹底解説

PowerShellで処理したデータをXML形式に変換して保存したいと思ったことはありませんか?
たとえば、ログ情報やシステム構成、ユーザー情報などを後で再利用したり、他のアプリケーションに受け渡したりする場面で、XML形式は非常に便利です。

そんなときに活用できるのが、PowerShellのConvertTo-Xmlコマンドです。
この記事では、ConvertTo-Xmlコマンドの基本的な使い方から、活用例、オプションの解説まで、初心者にもわかりやすく解説していきます。


ConvertTo-Xmlとは?

ConvertTo-Xmlは、PowerShellのオブジェクトをXML形式に変換するためのコマンドレットです。
通常の出力をXMLに変換することで、データ構造を視覚的に把握しやすくなり、他のアプリケーションとの連携にも役立ちます。

たとえば、ファイルとして保存して後で読み込んだり、他のスクリプトやシステムに渡したりする際に、ConvertTo-Xmlを使っておけばスムーズです。

基本構文は以下の通りです。

<オブジェクト> | ConvertTo-Xml

例:

Get-Process | ConvertTo-Xml

基本的な使い方

1. オブジェクトをそのままXML形式に変換

最もシンプルな使い方は、PowerShellのコマンドの出力にパイプでConvertTo-Xmlをつなげるだけです。

Get-Service | ConvertTo-Xml

これを実行すると、PowerShellが返すサービス情報がXML形式で表示されます。

2. 出力結果をファイルとして保存

変換結果をファイルに保存したい場合は、Out-Fileコマンドを組み合わせます。

Get-Service | ConvertTo-Xml | Out-File "services.xml"

このようにすると、変換されたXMLが services.xml というファイルに保存されます。
他のシステムとの連携やバックアップにも便利です。


Depthパラメーターの活用

ConvertTo-Xmlでは、オブジェクトの階層構造の深さを指定できる -Depth パラメーターがあります。
デフォルトでは 2 に設定されていますが、必要に応じて変更可能です。

Get-Process | ConvertTo-Xml -Depth 3

階層が深いオブジェクト(たとえば複雑なプロパティを含むもの)の場合、Depthを深くすることで詳細な情報までXMLに含められます。


AsStringパラメーターで文字列として扱う

通常、ConvertTo-XmlはXMLドキュメントオブジェクト(XmlDocument型)を返しますが、-AsStringパラメーターを指定することで、単純な文字列として返すことができます。

$xmlString = Get-Date | ConvertTo-Xml -AsString
Write-Output $xmlString

文字列として扱いたい場合や、メール本文などに直接XMLデータを貼り付けたい場合に便利です。


具体的な活用例

例1:システム情報をXMLでエクスポート

Get-ComputerInfo | ConvertTo-Xml -Depth 3 | Out-File "systeminfo.xml"

このスクリプトは、PCのシステム情報をXMLファイルに保存します。
管理者が定期的に情報を取得する仕組みとして活用できます。


例2:複数のユーザー情報を記録

$users = Get-LocalUser
$users | ConvertTo-Xml | Out-File "users.xml"

ローカルユーザー情報をXMLにしておくことで、セキュリティ監査や移行時の記録に役立ちます。


例3:日時つきファイル名でログ保存

$date = Get-Date -Format "yyyyMMdd_HHmmss"
Get-Process | ConvertTo-Xml | Out-File "process_$date.xml"

日付付きのファイル名を使えば、定期実行タスクとしても使いやすく、過去ログの整理にも役立ちます。


注意点と補足

  • ConvertTo-Xmlフォーマット用のコマンドであり、再度PowerShellでそのまま読み込んで扱うには Select-Xml.LoadXml() などの補助が必要です。
  • XML形式にすると、情報量が多い場合にかなりのボリュームになることがあります。必要な情報だけをあらかじめ Select-Object で抽出すると見やすくなります。

例:

Get-Process | Select-Object Name, Id | ConvertTo-Xml | Out-File "shorter_process.xml"

まとめ

PowerShellのConvertTo-Xmlは、スクリプトで処理した情報をXMLとして保存・共有するのにとても便利なコマンドレットです。

ポイントをおさらいすると:

  • | ConvertTo-Xml で簡単にXML形式に変換できる
  • -Depth パラメーターで情報の詳細度を調整できる
  • -AsString で文字列として出力可能
  • Out-File を使えば保存も簡単
  • 他のコマンドと組み合わせれば多様な用途に対応可能

XML形式は機械的に扱いやすく、多くのシステムでサポートされているため、PowerShellでの自動化や管理の幅がぐっと広がります。
ぜひこの機会にConvertTo-Xmlを使いこなしてみてください。

タイトルとURLをコピーしました