vSphere PowerCLI cmdlet 能否从 PS1 文件执行?

sme*_*eeb 4 domain-name-system dhcp virtualization powershell vmware-esxi

我正在寻找一个管理脚本,它将:

  • 从 vSphere 中删除虚拟机
  • 删除 VM 的 DNS 条目
  • 使用我们的 Windows DHCP 服务器释放 VM 的 IP 地址

我可以通过 vSphere 的 PowerCLI 完成第一项,我可以通过 PowerShell“ Cmdlets”完成最后两项。此外,我可以将这些Cmdlets放在一个*.ps1文件中并从 shell 执行该文件。

初步研究表明,PowerCLI 只是包装/扩展了 PowerShell,并且基本上只是由它自己的以 vSphere 为中心的Cmdlets. 所以我想知道:我可以将 PowerCLI“代码”(Cmdlets等)与其他 PowerShell 代码一起放在 PS1 文件中,并像普通 PS1 一样执行它吗?

jsc*_*ott 11

我可以将 PowerCLI“代码”(Cmdlets 等)与其他 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\""
Run Code Online (Sandbox Code Playgroud)

打破这个:

  • 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,哪个点将 [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
...
Run Code Online (Sandbox Code Playgroud)