もうちょい頑張る技術メモシリーズ。
SSOユーザーの情報は cat /etc/passwd
にいないから、シェルで入って chage -l username
しても意味ないし…とゆーことで、登場するのがPowerCLI。
たーだーし、通常のPowerCLI単体ではSSOユーザー(vsphere.local)の情報取得や操作ができないから、追加モジュールが必要だったりする…
#なんでこう面倒くさい仕様にしてんのか
はい、ということで、以下SSO情報を取ったり操作するためのまとめ。
PowerCLIはインストール済みという前提。
■参考リンク
- 【PowerCLI】SSOユーザーとグループの操作|Tのジレンマ
- New Open Source PowerCLI Module for managing vCenter Single Sign-On (SSO)|VMware PowerCLI Blog
1. モジュールの追加
1-1.オンラインの場合
- Powershellを管理者として実行する
Install-Module VMware.vSphere.SsoAdmin
を実行し、モジュールをインストールするGet-Module VMware* -ListAvailable
を実行し、インストールされたことを確認する
1-2.オフラインの場合
- powershellgalleryのVMware.vSphere.SsoAdminのManual Downloadからモジュールのパッケージをダウンロードする
- Microsoftの「NuGet パッケージから PowerShell モジュールをインストールする 」を参照して、VMware.vSphere.SsoAdminをインストールする
Get-Module VMware* -ListAvailable
を実行し、インストールされたことを確認する
2.SSOユーザーの操作
2-1.SSOサーバへのログイン
Connect-SsoAdminServer -Server [vCenterのIPもしくはFQDN] -User Administrator@vsphere.local -SkipCertificateCheck
を実行する- 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は死亡((-ノ-)/Ωチーン)なので、仕方ないんだけど…