web-dev-qa-db-ja.com

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

私は次のような管理スクリプトを書きたいと思っています。

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

VSphereのPowerCLIを介して最初の項目を達成でき、PowerShell "Cmdlets"を介して最後の2つの項目を達成できます。さらに、これらのCmdlets*.ps1ファイルを作成し、シェルからファイルを実行します。

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

4
smeeb

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"

指定されたvim.psc1コンソールをロードする_-PSConsole_の短縮形。

  • _-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
...
_
11
jscott