vSphere PowerCLI コマンドレットは PS1 ファイルから実行できますか?

vSphere PowerCLI コマンドレットは PS1 ファイルから実行できますか?

私は次のような管理スクリプトを作成したいと考えています:

  • vSphere から VM を削除する
  • VMのDNSエントリを削除する
  • Windows DHCPサーバーでVMのIPアドレスを解放する

最初の項目は vSphere の PowerCLI で実行でき、最後の 2 つの項目は PowerShell " Cmdlets" で実行できます。さらに、これらをファイルCmdlets内に入れて*.ps1、シェルからファイルを実行することもできます。

初期調査では、PowerCLI は PowerShell をラップ/拡張しているだけで、基本的には独自の vSphere 中心の で構成されていることがわかりましたCmdlets。そこで疑問に思うのは、PowerCLI「コード」(Cmdletsなど) を他の PowerShell コードとともに PS1 ファイル内に配置し、通常の PS1 のように実行できるかどうかです。

答え1

PowerCLI「コード」(コマンドレットなど)を他の PowerShell コードとともに PS1 ファイル内に配置し、通常の PS1 のように実行できますか?

はい。ただし、PowerCLI コンソールを使用する場合のように期待どおりに動作させたい場合、環境を初期化する必要があります。ショートカット「VMware vSphere PowerCLI.lnk」を調べると、これがどのように行われるかがわかります。ターゲットは次のとおりです。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

これを詳しく見てみましょう:

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Powershellバイナリ

  • -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"

の短縮形-PSConsole。指定された vim.psc1 コンソールをロードします。

  • -noe

の短縮形です-NoExit。起動コマンドを実行した後も閉じません。

  • -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

の短縮形-Command。[パスはエスケープ引用符で囲まれています] ファイル Initialize-PowerCLIEnvironment.ps1 をセッションにドット ソースします。

これを凝縮して、初期化を任意の .ps1 ファイルに配置することができます。このスタブの例から始めることができます。

# This is the main magic.
Add-PSSnapin VMware.VimAutomation.Core

# Dot source the PowerCLI init script
. 'C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1'

# We're up and running with "PowerCLI", do some VM stuff.
Connect-VIServer vcenter-01
Get-VM
...

関連情報