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

Powershell as scheduled task issue with importing module, it seems

我正在尝试为我们的 VMware Horizo​​n 环境配置一些 powershell/view powercli 脚本。我有一个 powershell 脚本,可以正常工作以查询 horizo​​n 实例并检查机器状态。但是,当我尝试使用服务帐户将此作为计划任务 运行 时,它似乎无法导入模块,因为无法识别命令 ("The term 'Connect-HVServer' is not recognized as the name of a cmdlet, function, script file, or operable program.")

我也试过配置文件,没关系。

我观察到的是,如果我以相关用户的身份打开 powershell(运行 作为不同的用户 > 作为服务帐户进行身份验证),让该 powershell 实例保持打开状态将允许计划任务 [=19= 】 不出所料。但是,如果我关闭 powershell 实例,计划任务将失败。这显然是不可行的,因为此脚本的目标是 运行 在没有服务帐户(或任何帐户)登录到 windows 服务器的情况下按计划 运行 在 powershell 脚本获取 [=19] =].

您 运行 遇到的问题是环境变量。在 运行 作为用户与 运行 作为机器的过程中,PSModulePath 环境变量更改为包括用于用户范围模块安装的用户目录。您应该在整个计算机范围内安装 PowerCLI

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

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

第一个备选方案示例:

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'