Export-TransportRuleCollection コマンドの中身を見る

トランスポート ルール関連のコマンドとして Export-TransportRuleCollection コマンドと Import-TransportRuleCollection コマンドがあります。
基本的にこれらはその名前の通りトランスポート ルールのエクスポートとインポートを行うためのコマンドであり、設定内容を取得したり確認したりするためのものではありません。
設定内容を取得するには Get-TransportRule コマンドを使用するべきです。

ですが Export-TransportRuleCollection コマンドの出力内容としては XML でラップされた New-TransportRule コマンドになっているので、内容を読もうと思えば読むこともできます。
なかなか役に立つ機会は無いと思いますがやり方を紹介します。

まずはトランスポート ルールの内容をエクスポートします。
今回は Export-TransportRuleCollection コマンドの Docs に記載の例を参考にして、以下のようにエクスポートしてファイルに保存します。

$File = Export-TransportRuleCollection
Set-Content -Path "C:\Temp\Rules.xml" -Value $File.FileData -Encoding Byte

本来はこのファイルをバイト配列として読み取って Import-TransportRuleCollection コマンドに渡しますが、今回は内容を確認したいので Get-Content コマンドでファイルの内容を取得する時にデータ型を明示的に xml としておきます。

$RuleCollection = Get-Content -Path "C:\Temp\Rules.xml"

あとは中身を表示します。
独特な親子関係を持つ XML 形式になっているので、以下のようにして必要な情報を一元的に表示してあげます。

$RuleCollection.rules.rule | %{$_ | select name, id, format, @{n="requiredMinVersion"; e={$_.version.requiredMinVersion}}, @{n="commandBlock";e={$_.version.commandBlock."#cdata-section"}}}