taka.

taka./vSphere Cient 上の各ロールの権限を PowerCLI で一覧出力する

Created at Updated at
542 Words 2 min

はじめに

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 に接続可能であること

 

ロール・権限調査用情報出力

  1. キーボードの [Windows] + [X] でシステムメニューを開き、 [A] キー を押下し、ターミナルを管理者として起動する

     

  2. ターミナルがコマンド プロンプトで起動している場合、以下のコマンドで PowerShell を起動する

    powershell
    

     

  3. Connect-VIServerで<vCenter Server FQDN>、vCenter Serverの<ユーザー名>、<パスワード>を指定し、 vCenter Server に接続

    Connect-VIServer  -Server vcsa-060.lab.internal -User "administrator@vsphere.local" -Password "P@ssw0rd" -force
    
    Name                           Port  User
    ----                           ----  ----
    vcsa-060.lab.internal          443   VSPHERE.LOCAL\Administrator
    

     

  4. ロール・権限調査結果となる情報出力ファイルのファイルパスを変数に格納

    $CsvFile = "$env:userprofile\desktop\Role_Privilege_List_$(Get-Date -Format "yyyyMMdd-HHmmss").csv"
    

     

  5. ロール・権限調査結果の情報出力

    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
    

     

  6. デスクトップに CSV ファイル (Role_Privilege_List_yyyyMMdd-HHmmss.csv) が出力されていることを確認する

     

環境

  • vCenter Server 7.0.3 ( Build:24322018 )
  • PowerCLI 13.3.0 ( Build: 24145083 )