PowerNSX を楽しむべく、NSX Manager と vCenter の接続状態をもとに

プロンプト文字列の色を変更してみようと思います。

powernsx-prompt.png

 

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 についての情報も表示してみました。

powernsx-prompt-2.png

 

これで、Connect-NsxServer で接続すると、冒頭のスクリーンショットのようにプロンプト色がかわります。

ラボ環境の NSX などでお楽しみいただければと思います・・・

 

以上、PowerNSX のプロンプトを工夫してみる話でした。