我的问题涉及到PowerCLI的具体模块,但我希望它涉及到PS乔布斯更通用的问题。我正在加载作业脚本块中的命令所需的模块,但是这些命令无法识别,就好像模块没有加载一样。
在开始作业之前,我正在加载VMware powerCLI模型,如下所示,但是scriptblock中的代码无法识别模块被加载,因此get-vm命令无法识别。
导入模块VMWare.VimAutomation.core Connect-VIServer -server VIServer01 $NewJob =start- -scriptblock {Get-VM -server VIServer01选择名称,@{N=“群集”;E={Get-群集-VM $},@{N="ESXHost";E={Get-VMHost -VM $}
我熟悉将参数从脚本传递到作业脚本块的需要和方法,但是如何让它识别模块已经加载?此外,如果我从scriptblock中加载模块,则会出现堆栈溢出故障,我猜是由于模块反复循环加载造成的。
发布于 2015-10-05 13:05:30
启动PS作业就像启动PS控制台的新实例一样。它不包含正在创建作业的凭证中的任何变量或加载的模块/管理单元。因此,我必须加载管理单元,并从作业scriptblock中正确地将变量传递到scriptblock)。但是,通过添加-RunAs32,我能够防止PS中的堆栈溢出错误。我不知道为什么这会解决这个错误。
foreach ($VIServer in $VIServers){
$NewJob = start-job {} -scriptblock { param([string]$VIServer)
Import-Module VMWare.VimAutomation.core
Connect-VIServer $VIServer
Get-VM -server $VIServer | Select Name, @(N="vCenter";E={$VIServer}},`
@{N="Cluster";E={Get-Cluster -VM $_}}, @{N="ESXHost";E={Get-VMHost -VM $_}}} -RunAs32 -ArgumentList $VIserverhttps://stackoverflow.com/questions/32911359
复制相似问题