はじめに
vSphere Client 上のロールに設定されている権限を調査する必要が生じ、 PowerCLI を利用してすべてのロールを対象にそれぞれのロールに設定されている権限を一括出力するコマンドラインを作成したため、記事に残す。
コマンドライン処理概要
- 情報の出力はデスクトップに CSV ファイル (
Role_Privilege_List_yyyyMMdd-HHmmss.csv) に出力する
CSVファイル出力サンプル
"RoleName","Privilege"
"Admin","Alarm.Acknowledge"
"Admin","Alarm.Create"
"Admin","Alarm.Delete"
...
前提条件
- PowerCLI がインストールされていること
- PoewrCLI を実行する端末から vCenter Server に接続可能であること
ロール・権限調査用情報出力
キーボードの [Windows] + [X] でシステムメニューを開き、 [A] キー を押下し、ターミナルを管理者として起動する
ターミナルがコマンド プロンプトで起動している場合、以下のコマンドで PowerShell を起動する
powershellConnect-VIServerで<vCenter Server FQDN>、vCenter Serverの<ユーザー名>、<パスワード>を指定し、 vCenter Server に接続
Connect-VIServer -Server vcsa-060.lab.internal -User "administrator@vsphere.local" -Password "P@ssw0rd" -forceName Port User ---- ---- ---- vcsa-060.lab.internal 443 VSPHERE.LOCAL\Administratorロール・権限調査結果となる情報出力ファイルのファイルパスを変数に格納
$CsvFile = "$env:userprofile\desktop\Role_Privilege_List_$(Get-Date -Format "yyyyMMdd-HHmmss").csv"ロール・権限調査結果の情報出力
Get-VIRole | Sort-Object Name | ForEach-Object { $role = $_ $privIds = $role.PrivilegeList | Sort-Object if ($privIds) { foreach ($privId in $privIds) { [PSCustomObject]@{ RoleName = $role.Name Privilege = $privId } } } else { [PSCustomObject]@{ RoleName = $role.Name Privilege = $null } } } | Export-Csv -Path $CsvFile -NoTypeInformation -Encoding UTF8デスクトップに CSV ファイル (Role_Privilege_List_yyyyMMdd-HHmmss.csv) が出力されていることを確認する
環境
- vCenter Server 7.0.3 ( Build:24322018 )
- PowerCLI 13.3.0 ( Build: 24145083 )