vSphere PowerCLI cmdlet 可以從 PS1 檔案執行嗎?

vSphere PowerCLI cmdlet 可以從 PS1 檔案執行嗎?

我正在編寫一個管理腳本,它將:

  • 從 vSphere 中刪除虛擬機
  • 刪除虛擬機器的 DNS 項目
  • 使用我們的 Windows DHCP 伺服器釋放虛擬機器的 IP 位址

我可以透過 vSphere 的 PowerCLI 完成第一項,並且可以透過 PowerShell“” 完成最後兩項Cmdlets。此外,我可以將它們放入Cmdlets一個*.ps1檔案中並從 shell 執行該檔案。

初步研究表明,PowerCLI 只是包裝/擴展了 PowerShell,並且基本上僅由其自己的以 vSphere 為中心的Cmdlets.所以我想知道:我可以將 PowerCLI“代碼”(Cmdlets等)與其他 PowerShell 代碼一起放入 PS1 文件中,並像普通 PS1 一樣執行它嗎?

答案1

我可以將 PowerCLI「程式碼」(Cmdlet 等)與其他 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
...

相關內容