PowerNSX を楽しむべく、NSX Manager と vCenter の接続状態をもとに
プロンプト文字列の色を変更してみようと思います。
PowerCLI + vCenter 接続のケースはこちらもどうぞ。
PowerCLI プロンプト文字列に vCenter への接続状態を反映してみる。
今回は、下記の前提です。
- PowerCLI はインストール済み。
- PowerNSX はインストール済み。
- Windows 10 環境で実行。
ということで、
まず下記のような PowerShell スクリプト「set_powernsx_prompt.ps1」を
適当なフォルダ(「ドキュメント」配下など、今後も配置しておける場所)に作成しておきます。
vCenter と NSX Manager の接続状態が自動格納される変数である
$global:DefaultVIServer と $DefaultNSXConnection をもとに、下記のようにプロンプトの色を変更します。
- NSX Manager と vCenter 両方に接続できていたら Cyan
- NSX Manager が連携している vCenter と、接続している vCenter が違ったら怪しいので Red
- NSX Manger だけに接続できていたら DarkCyan
- vCenter だけに接続できていたら Green
- 未接続は Gray
残念ながら、複数台の vCenter に同時接続するケースにはちゃんと対応してません。
set_powernsx_prompt.ps1
$module_list = @(
"VMware.VimAutomation.Core",
"VMware.VimAutomation.Vds",
"PowerNSX"
)
Import-Module $module_list
$window_width = 120
$window_height = 40
$window_buffer = 3000
$pshost = Get-Host
$pswindow = $pshost.ui.rawui
$pswindow.WindowTitle = "PowerNSX"
$newsize = $pswindow.buffersize
$newsize.height = $window_buffer
$newsize.width = $window_width
$pswindow.buffersize = $newsize
$newsize = $pswindow.windowsize
$newsize.height = $window_height
$newsize.width = $window_width
$pswindow.windowsize = $newsize
Clear-Host
$module = Get-Module -Name PowerNSX
Write-Host ""
Write-Host "Welcome to " -NoNewLine
Write-Host $module.Name -foregroundcolor Cyan
Write-Host $module.ProjectUri
Write-Host ""
Write-Host $module.Copyright
Write-Host ""
Write-Host $module.Description
Write-Host ""
(Get-Module $module_list | ft -AutoSize Name,Version -HideTableHeaders | Out-String).trim()
Write-Host ""
Write-Host "Log in to a vCenter Server and NSX Mnager: "
Write-Host " Connect-NsxServer -vCenterServer <vCenter Server>" -foregroundcolor yellow
Write-Host ""
function prompt{
$vc = $global:DefaultVIServer
$nsx = $DefaultNSXConnection
if(($vc.IsConnected -eq $True) -and ($nsx.Server -ne $null)){
$prompt_color = "Cyan"
if($vc.Name -ne $nsx.VIConnection){
$prompt_color = "Red"
}
}
elseif(($vc.IsConnected -ne $True) -and ($nsx.Server -ne $null)){
$prompt_color = "DarkCyan"
}
elseif(($vc.IsConnected -eq $True) -and ($nsx.Server -eq $null)){
$prompt_color = "Green"
}
else{
$prompt_color = "Gray"
}
Write-Host "PowerNSX" -NoNewLine -ForegroundColor $prompt_color
Write-Host ">" -NoNewline
return " "
}
ついでに、set_powernsx_prompt.ps1 を読み込んで PowerShell を起動するショートカットを作成します。
今回は下記のスクリプトで、デスクトップに「PowerNSX」というショートカットを作成しました。
このスクリプトは上記のスクリプトと同じフォルダに配置して、実行します。
実行するとき、PowerShell の ExecutionPolicy は
スクリプト実行できる設定(RemoteSigned など)にしておきます。
# デスクトップに PowerNSX のショートカットを作成する。
$tool_name = "PowerNSX"
$profile_script_name = "set_powernsx_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()
作成した PowerNSX ショートカットをダブルクリックすると、下記のような感じになると思います。
ためしにインストールされた PowerNSX / PowerCLI についての情報も表示してみました。
これで、Connect-NsxServer で接続すると、冒頭のスクリーンショットのようにプロンプト色がかわります。
ラボ環境の NSX などでお楽しみいただければと思います・・・
以上、PowerNSX のプロンプトを工夫してみる話でした。