2015年2月20日金曜日

PowerCLIでvCneter Serverに接続する際にパスワードファイルを使って認証する方法

vCenter ServerにPowerCLIで接続するコマンドレットはConnect-VIServerとなる。vCenter ServerのOSに直接ログインしてPowerCLIを使う場合は、接続先にlocalhostを指定することで、ユーザー名やパスワードを求められることは無く接続が可能。
Connect-VIServer -Server localhost
しかし、他サーバーや端末から接続しようとすると、ユーザー名・パスワードを求められるポップアップが表示されてしまう。手作業であれば問題ないが、スクリプト等で実行しようとすると不便であり、かと言って、
Connect-VIServer -Server localhost -User hoge -Password hogepass
といったように、パスワードを平文で書いてしまうのもセキュリティ上問題となるので、パスワードファイルを生成して読み込ませる方法を記載する。この方法はPowerCLIに限らず、PowerShellのスクリプトでも活用できるはず。

実施方法

事前に「本スクリプト実行サーバ」にて、以下コマンドにてSecureString型のパスワード生成する。

Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File vcpwd.txt

コマンドを実行した後パスワードを入力してEnterを押せば、vcpwd.txtというファイルが作成される。

上記パスワードファイルを読み込ませてvCenter Serverに接続し、色々処理をした後切断するスクリプトは以下の通り。
# vCenterサーバへ接続
$VCENTER = "192.168.1.100"             # vCenter ServerのIPアドレス
$VCUSER = "vcenteruser"                # vCenter Serverログインユーザー

$secpasswd = cat vcpwd.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential ($VCUSER, $secpasswd)
$vi = Connect-VIServer -Server $VCENTER -Credential $cred

~ここに処理を書く~

# vCenterサーバより切断
Disconnect-VIServer -Server $vi -Force -Confirm:$False

exit 0