Domain-Name-System

vSphere PowerCLI cmdlet 可以從 PS1 文件執行嗎?

  • February 26, 2015

我正在尋找一個管理腳本,它將:

  • 從 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
...

引用自:https://serverfault.com/questions/671391