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
を使いこなしてみてください。