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

相关内容