PowerCLIでSSO(vsphere.local)ユーザーの情報を取得したり操作したりするコマンドまとめ

もうちょい頑張る技術メモシリーズ。

SSOユーザーの情報は cat /etc/passwdにいないから、シェルで入って chage -l usernameしても意味ないし…とゆーことで、登場するのがPowerCLI。
たーだーし、通常のPowerCLI単体ではSSOユーザー(vsphere.local)の情報取得や操作ができないから、追加モジュールが必要だったりする…
 #なんでこう面倒くさい仕様にしてんのか

はい、ということで、以下SSO情報を取ったり操作するためのまとめ。
PowerCLIはインストール済みという前提。

■参考リンク

1. モジュールの追加

1-1.オンラインの場合

  1. Powershellを管理者として実行する
  2. Install-Module VMware.vSphere.SsoAdminを実行し、モジュールをインストールする
  3. Get-Module VMware* -ListAvailableを実行し、インストールされたことを確認する

1-2.オフラインの場合

  1. powershellgalleryのVMware.vSphere.SsoAdminのManual Downloadからモジュールのパッケージをダウンロードする
  2. Microsoftの「NuGet パッケージから PowerShell モジュールをインストールする 」を参照して、VMware.vSphere.SsoAdminをインストールする
  3. Get-Module VMware* -ListAvailableを実行し、インストールされたことを確認する

2.SSOユーザーの操作

2-1.SSOサーバへのログイン

  1. Connect-SsoAdminServer -Server [vCenterのIPもしくはFQDN] -User Administrator@vsphere.local -SkipCertificateCheckを実行する
  2. Administrator@vsphere.localのパスワードを入力してログインする ※接続先がSSOサーバなので、接続コマンドがConnect-VIServer では無い ことに注意!

2-2.情報表示系コマンド

  • vsphere.localの全ユーザーを取得する: Get-SsoPersonUser -Domain vsphere.local
  • vsphere.localの特定のユーザーを取得する:Get-SsoPersonUser -Domain vsphere.local -Name [対象のユーザー名]
  • vsphere.localの全グループを取得する:Get-SsoGroup -Domain
  • vsphere.localの特定グループを取得する:Get-SsoGroup -Domain vsphere.local -Name [対象のグループ名]
  • グループ内のメンバーを取得する:Get-SsoGroup -Domain vsphere.local -Name [対象のグループ名] | Get-SsoPersonUser
  • グループ内のグループを取得する:`Get-SsoGroup -Domain vsphere.local -Name [対象のグループ名] | Get-Ssogroup

2-3.操作系コマンド

  • SSOドメインのユーザーを作成する: New-SsoPersonUser -UserName [ユーザー名] -Password [パスワード]
  • SSOドメインのユーザーPWを変更する
  • 変数をセットする:$[変数名]=Get-SsoPersonUser -Name [ユーザー名] -Domain [ドメイン名]
  • パスワードを変更する:Set-SsoPersonUser -User $[変数名] -NewPassword [パスワード]
  • SSOドメインのユーザーを削除する
  • 変数をセットする:$<変数名>=Get-SsoPersonUser -Name [ユーザー名] -Domain [ドメイン名]
  • ユーザーを削除する:Remove-SsoPersonUser -User $[変数名]
  • SSOドメインのグループを作成する:New-SsoGroup -Name [ユーザー名]
  • SSOドメインのグループの説明を変更する:
  • 変数をセットする:$[変数名]=Get-SsoGroup -Name [グループ名] -Domain [ドメイン名]
  • 説明変更する:Set-SsoGroup -Group $[変数名] -Description [説明]
  • SSOドメインのグループを削除する
  • 変数をセットする:$<変数名>=Get-SsoPersonUser -Name [ユーザー名] -Domain [ドメイン名]
  • グループを削除する:Remove-SsoPersonUser -User $[変数名]
  • SSOドメインのグループにメンバーを追加する
  • 変数をセットする:$<変数名>=Get-SsoGroup -Name [グループ名] -Domain [ドメイン名]
  • メンバーを追加する:Get-SsoPersonUser -Name [ユーザー名] -Domain [ドメイン名] | Add-UserToSsoGroup -TargetGroup $[変数]
  • SSOドメインのグループからメンバーを削除する:
  • 変数をセットする:$<変数名>=Get-SsoGroup -Name [グループ名] -Domain [ドメイン名]
  • メンバーを削除する:Get-SsoPersonUser -Name [ユーザー名] -Domain [ドメイン名] | Remove-UserFromSsoGroup -TargetGroup $[変数]
  • SSOドメインのグループにグループを追加する:
  • 変数をセットする:$<変数名>=Get-SsoGroup -Name [グループ名] -Domain [ドメイン名]
  • グループを追加する:Get-SsoGroup -Name [グループ名] -Domain [ドメイン名] | Add-GroupToSsoGroup -TargetGroup $<変数名>
  • SSOドメインのグループからグループを削除する:
  • 変数をセットする:`$<変数名>=Get-SsoGroup -Name [グループ名] -Domain [ドメイン名]“
  • グループを削除する:Get-SsoGroup -Name [グループ名] -Domain [ドメイン名] | Remove-GroupToSsoGroup -TargetGroup $<変数名>

2-4 SSOサーバからログアウト

Disconnect-SsoAdminServer

これら以外のコマンドを確認したい場合

Get-Command -Module VMware.vSphere.SsoAdmin

ちな、何でSSOユーザーの情報がほしいかというと、PW切れをやらかした奴がおったので
もうこれは一括で情報取って、有効期限管理するしかないなーと…
しょっちゅう入る人間ならログイン時に「あと○日で切れます」な警告が出るけど、たまにしか入らん奴は、切れてから「切れて入れねぇ!リセットヨロ!」的話になるのでね…┐(´д`)┌ヤレヤレ

それにしても、vSphere Clientってブラウザ版、特にHTML5になってから何かこう中途半端な気がする…
 #昔のネイティブクライアントとFLASHクライアントってもう少し色々できたような…
まあ、ネイティブクライアントはネイティブクライアントで、インストールするために客の承認が必要だとか、vSphereのバージョンによって使えるバージョン違ったりしで面倒だったし、FLASHは死亡((-ノ-)/Ωチーン)なので、仕方ないんだけど…