【问题标题】:Start-Job does not recognize module loadedStart-Job 无法识别加载的模块
【发布时间】:2015-12-30 21:52:19
【问题描述】:

我的问题涉及 PowerCLI 的特定模块,但我希望它涉及到 PS Jobs 的更普遍的问题。我正在加载作业脚本块中的命令所需的模块,但无法识别这些命令,就好像未加载该模块一样。

我在start-job之前加载了VMware powerCLI modele,如下,但是scriptblock中的代码无法识别模块已加载,所以get-vm命令无法识别。

导入模块 VMWare.VimAutomation.core 连接-VIServer-服务器 VIServer01 $NewJob = start-job -scriptblock {Get-VM -server VIServer01 |选择名称,@{N="Cluster";E={Get-Cluster -VM $}},@{N="ESXHost";E={Get-VMHost -VM $}}}

我熟悉将参数从脚本传递到作业脚本块的必要性和方法,但是如何让它识别模块已加载?另外,如果我从脚本块中加载模块,我会遇到堆栈溢出失败,我猜是由于模块的重复循环加载。

【问题讨论】:

    标签: start-job


    【解决方案1】:

    启动 PS 作业就像启动一个新的 PS 控制台实例。它不包含任何变量或从创建作业的脚本中加载的模块/管理单元。所以我确实必须从作业脚本块中加载管理单元并将变量正确传递到脚本块中)。但是通过添加 -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 $VIserver
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2021-11-01
      • 2016-07-08
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多