どうもミツシマです。

今回は「Get-MsolUser」コマンドと「Export-Csv」コマンドを使用してユーザーに付与されているライセンス種別を一括でCSV出力する方法を検証してみました。

検証環境は以下の通りです。
クライアントOS:Windows10 Pro 2004


〜検証〜

まずは単純に「Get-MsolUser | Select-Object UserPrincipalName,DisplayName,IsLicensed,Licenses」というコマンドを試してみるとPowershellコマンド上にライセンス種別がバッチリ確認出来ます。
01コマンド結果

なので、「Get-MsolUser | Select-Object UserPrincipalName,DisplayName,IsLicensed,Licenses | Export-Csv -Path UserInfo.csv -Encoding Default -NoTypeInformation」というコマンドでCSV出力してみると・・・・・
03CSVファイル

なんか変な感じに出力されてる〜〜〜(@_@;)


調べてみるとコマンド結果で出力されるオブジェクトのプロパティの内、階層構造を持つものがあればそのまま出力するのは出来ないとのこと。
階層構造というのが??という感じだったが、プロパティの中で更に複数の属性や値?を持っているということだと思います、多分(汗)

それをイメージしやすくするために下記コマンドを実行してみました。すると
02コマンド結果
確かに「Licenses」というプロパティが複数の属性と値?を持っていることがわかります。
じゃあ何で最初からこうやって表示しないんだよ、とちょっと思ってしまいますが。。。。orz


という感じで試行錯誤し、最終的に成功したコマンドが以下となります。
Get-MsolUser | Select-Object UserPrincipalName,DisplayName,IsLicensed,@{Label="Licenses";Expression={($_.Licenses | Foreach-Object {$_.AccountSkuId})}} | Export-Csv -Path UserInfo.csv -Encoding Default -NoTypeInformation

↓↓CSVファイルを開くとこんな感じ↓↓
04CSVファイル
※試用版のE3ライセンスが表示されています。

@{Label=〜}」というのでハッシュテーブルを使用し、新たにプロパティとして格納しているイメージですかね!!
-Path」を今回は指定していないので、指定のフォルダに出力したい場合はそのパスに書き換えてください。
他には「ConvertTo-Json」コマンドを使用してJSON形式に変換して出力する方法等もあるようですがそちらは特に試してないです。


といったところで今日の検証はこんなところで終了です。
Powershell慣れてきたかな〜〜と思ったら、こういうところで躓くのでまだまだニワカというのを痛感させられました。
日々精進ですね(^o^)

スポンサードリンク