代码之家  ›  专栏  ›  技术社区  ›  Don Shappelle

Powershell作为导入模块的计划任务问题,似乎

  •  1
  • Don Shappelle  · 技术社区  · 7 年前

    我正在尝试为我们的VMware horizon环境配置一些powershell/view powercli脚本。我有一个powershell脚本,可以正确地查询horizon实例并检查机器状态。但是,当我尝试使用服务帐户将其作为计划任务运行时,似乎无法导入模块,因为命令无法识别(“术语“Connect HVServer”不能识别为cmdlet、函数、脚本文件或可操作程序的名称”)

    我也试过个人资料,没关系。

    我观察到的是,如果我以所讨论的用户身份打开powershell(以不同的用户身份运行>以服务帐户身份验证),保持该powershell实例打开将允许计划任务按预期运行。但是,如果关闭powershell实例,计划的任务将失败。这显然是不可行的,因为该脚本的目标是在运行powershell脚本时,在没有服务帐户(或任何帐户)登录windows服务器的情况下按计划运行。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Maximilian Burszley    7 年前

    您遇到的问题是环境变量。在以用户身份运行与以机器身份运行的过程中 PSModulePath 环境变量更改为包含用户范围的模块安装的用户目录。你应该安装 PowerCLI 机器范围。

    备选方案(假设您的服务帐户具有管理员权限):

    • 修改您的 $Env:PSModulePath 在脚本中包含每个用户的模块路径
    • 在中指定路径 Import-Module 在使用任何cmdlet之前,请在脚本中

    第一个备选方案的示例:

    foreach ($user in (Get-ChildItem -Path C:\Users)) {
        $Env:PSModulePath += ";$($user.FullName)\Documents\WindowsPowerShell\Modules"
    }
    

    第二个例子:

    Import-Module -Name 'C:\Users\KnownUser\Documents\WindowsPowerShell\Modules\PowerCLI'
    
    推荐文章