vSphere PowerCLI cmdlet是否可以从PS1文件执行?

我正在寻找写一个pipe理脚本,将:

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

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

最初的研究表明,PowerCLI只是包装/扩展了PowerShell,基本上只是由它自己的以vSphere为中心的Cmdlets 。 所以我想知道:我可以将PowerCLI“代码”( Cmdlets等)放在PS1文件中,以及其他PowerShell代码,并执行它像一个普通的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"

-PSConsole ,加载指定的vim.psc1控制台。

  • -noe

-NoExit ,不要在运行启动命令后closures。

  • -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

命令的-Command一个点是[注释path是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 ...