PowerCLI を楽しむべく、プロンプト文字列を工夫してみようと思います。
以前、下記のような投稿をしましたが・・・
PowerCLI のプロンプト文字列「PowerCLI>」について。
これを応用して、vCenter / ESXi への接続状態によって「PowerCLI」の色を変更してみます。
ということで、
まず下記のような PowerShell スクリプト「set_powercli_prompt.ps1」を
適当なフォルダ(「ドキュメント」配下など、今後も配置しておける場所)に作成しておきます。
ドット スペース「. 」からはじまる1 行目は、通常 PowerCLI が起動時に読み込むスクリプトを読み込んでいます。
そして、$global:DefaultVIServers 変数をもとに、接続している(IsConnected が Trueである)vCenter / ESXi が
1台でもあれば、プロンプトの文字列色を Green に、それ以外の場合は DarkCyan にします。
set_powercli_prompt.ps1
. "C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1"
Clear-Host
function prompt{
$vc_all = $global:DefaultVIServers
$vc_connected = $vc_all | where {$_.IsConnected -eq $True}
if($vc_connected.Count -ge 1){
$prompt_color = "Green"
}else{
$prompt_color = "DarkCyan"
}
Write-Host "PowerCLI" -NoNewLine -ForegroundColor $prompt_color
Write-Host ">" -NoNewLine -ForegroundColor "Gray"
return " "
}
そして、下記のスクリプトを読み込んで PowerShell を起動するショートカットを作成します。
今回は下記のスクリプトで、デスクトップに「PowerCLI」というショートカットを作成しました。
このスクリプトは上記のものと同じフォルダに配置して、実行します。
create_powercli_shortcut.ps1
$tool_name = "PowerCLI"
$profile_script_name = "set_powercli_prompt.ps1"
$shortcut_dir = Join-Path $HOME "Desktop"
$shortcut_path = Join-Path $shortcut_dir ($tool_name + ".lnk")
$tool_work_dir = (ls $PSCommandPath).DirectoryName
$profile_path = Join-Path $tool_work_dir $profile_script_name
$ps = "powershell"
$ps_argument = ("-NoExit", "-File", $profile_path) -join " "
$wsh = New-Object -ComObject WScript.Shell
$shortcut = $wsh.CreateShortcut($shortcut_path)
$shortcut.TargetPath = $ps
$shortcut.Arguments = $ps_argument
$shortcut.WorkingDirectory = (ls $profile_path).DirectoryName
$shortcut.Save()
上記の「create_powercli_shortcut.ps1」スクリプトを実行すると、
デスクトップに PowerCLI ショートカットが作成されます。
このショートカットは、powershell.exe を下記2つのオプションで起動するだけのものです。
- -NoExit
- -File ~\set_powercli_prompt.ps1 ※プロンプトを変更するスクリプトを指定する。
このショートカットを起動すると、プロンプトが「PowerCLI>」となった PowerShell が起動されます。
そして、Connect-VIServer で vCenter / ESXi に接続すると、プロンプトの色が変わります。
今回の例だと、vCenter 接続中だけ「PowerCLI」が Green になっています。
さらに工夫すれば、接続先の vCenter / ESXi の情報をプロンプトに反映したりすることもできます。
(しかしその分レスポンスに影響するので、やりすぎ注意・・・)
なお今回は、Windows 10 + PowerCLI 6.5 R1 の環境でしか動作を試してません。
以上、PowerCLI のプロンプトを工夫してみる話でした。