PowerCLIをもう少し使いこなしたい

明けましておめでとうございます。

12月はDWHのストレージ入れ替えで担当業者の大手SIerのPL,PMを1ヶ月で2回もしかも部長込みでクビにせざるを得ない状況で対応していたため、月末は書く余裕がありませんでした。DWHの件はやっとハード構成が完了し今月データ移行テストが開始されました。

書く事が余りありませんが、共有VDIのプールでの問題でプール内のVDIがログインしたままになっているものも含めて使い切られている状態であることを利用部署の部門長等が確認出来る仕組みがあるほうが望ましいです。もちろん自力でVDIの再起動まで実施してくれれば何の問題もありませんが、そこまでしなくても最低限『誰々がこのVDIにつないだままにしているのを強制ログオフしてほしい』という形でリクエストしてもらえるだけでもシステム部門としては運用が楽になる事請け合いです。

Viewを導入する前にWindows XPのVDIをCitrix XenDesktop4とvCenter+RDPで利用していたのですが、その際に共有PCの利用状況をチェックし結果をHTML化するスクリプトを作成していました。その際にはPowerCLIなどといった便利ツールはありませんでしたので、管理サーバから共有PCのリストに対してPINGを実行して稼動確認を行ったうえで、起動している場合はpsexecでVDIに接続しqwinstaコマンドでRDP接続しているユーザの情報を取得する方法で実装していましたが、その際には100台程度で1周させるのに10分程度掛かっていました。

それを考慮するとConnectionServerでPowerCLIの以下のコマンドを実行することでシャットダウン以外のVDIのステータスを短時間で取得できます。
PowerCLIは経験値が足りないので、VBScriptと合わせれば以前作成したような各プールごとの利用状況を取得しつつ、ADに対してLDAPでログイン中のユーザIDの詳細情報と合わせた利用状況をリストアップするスクリプトを作成できるでしょう。残念ながら、今VcenterのDBから個人割り当てのVDIの情報と移動プロファイルとフォルダリダイレクト対象者を処理するスクリプトを優先して作成する必要があるため、このスクリプト作成は当面先になると思います。

> Get-RemoteSession -pool_id 『プール名』
session : 160
Username         : ドメインFQDN\ユーザID
pool_id          : tcv-pl013
startTime        : Thu Jan 05 08:36:43 JST 2017
session_id       : ドメインFQDN\ユーザID(cn=s-1-5-21-2620938040-1617289647-3374191743-4885,cn=foreignsecurityprincipals,dc=vdi,dc=vmware
                   ,dc=int)/1@cn=9b09f52d-7a3c-4f8a-abcf-c1176e1cbc10,ou=servers,dc=vdi,dc=vmware,dc=int.cn=tcv-pl013,ou=server g
                   roups,dc=vdi,dc=vmware,dc=int:PCOIP:0:DESKTOP
DNSName          : vishare-c001.hoge.Local
duration         : 23 minutes
lastSessionTicks : -4402145
state            : CONNECTED
protocol         : PCOIP