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

Powershell作为导入模块的计划任务问题,似乎,powershell,scheduled-tasks,powercli,Powershell,Scheduled Tasks,Powercli,我正在尝试为VMware horizon环境配置一些powershell/view powercli脚本。我有一个powershell脚本,可以正常运行以查询horizon实例并检查机器状态。但是,当我尝试使用服务帐户将其作为计划任务运行时,似乎无法导入模块,因为无法识别命令(“术语“Connect HVServer”不能识别为cmdlet、函数、脚本文件或可操作程序的名称”) 我也试过了,没关系 我观察到,如果我以相关用户的身份打开powershell(以不同用户的身份运行>以服务帐户身份验证

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

我也试过了,没关系


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

您遇到的问题是环境变量。在以用户身份运行与以计算机身份运行的过程中,
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'

如果我将powershell作为服务帐户打开,脚本将正常运行。如果我让powershell保持打开状态(在该用户的上下文中运行),则计划的任务可以工作。模块安装在哪里?是否在
C:\Program Files\WindowsPowerShell\Modules
C:\Program Files(x86)\WindowsPowerShell\Modules
中,在计划任务中如何调用您的操作?@BenH查看PowerCLI的模块将被放置在用户的文档文件夹中。Get Module–ListAvailable VMware*|导入模块安装模块-名称VMware.PowerCLI-RequiredVersion 6.5.1.5377412–Scope CurrentUser-AllowClobber@jrider调用包含以下内容的.bat文件:cd C:\Windows\System32\WindowsPowerShell\v1.0 powershell.exe“&”c:\programdata\vmware\scripts\AgentUnreachable RefreshDesktopWithCreds.ps1-Execution“我尝试了方法2,我认为这可能会有所帮助。谢谢。@DonShappelle很高兴为您服务。如果这解决了您的问题,请将其标记为答案✅