Domain-Name-System
vSphere PowerCLI cmdlet 可以從 PS1 文件執行嗎?
我正在尋找一個管理腳本,它將:
- 從 vSphere 中刪除虛擬機
- 刪除 VM 的 DNS 條目
- 使用我們的 Windows DHCP 伺服器釋放 VM 的 IP 地址
我可以通過 vSphere 的 PowerCLI 完成第一項,我可以通過 PowerShell "
Cmdlets
" 完成最後兩項。此外,我可以將它們Cmdlets
放在一個*.ps1
文件中並從 shell 執行該文件。初步研究表明,PowerCLI 只是包裝/擴展 PowerShell,基本上只是由它自己的以 vSphere 為中心的
Cmdlets
. 所以我想知道:我可以將 PowerCLI“程式碼”(Cmdlets
等)與其他 PowerShell 程式碼一起放在 PS1 文件中,並像普通 PS1 一樣執行它嗎?
我可以將 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"
的縮寫,它載入指定的vim.psc1
-PSConsole
控制台。
-noe
的縮寫
-NoExit
,執行啟動命令後不要關閉。
-c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""
的縮寫
-Command
,點源$$ note path is escape-quoted $$將 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 ...