我正在尝试为我们的VMware horizon环境配置一些powershell/view powercli脚本。我有一个powershell脚本,可以正确地查询horizon实例并检查机器状态。但是,当我尝试使用服务帐户将其作为计划任务运行时,似乎无法导入模块,因为命令无法识别(“术语“Connect HVServer”不能识别为cmdlet、函数、脚本文件或可操作程序的名称”)
我也试过个人资料,没关系。
我观察到的是,如果我以所讨论的用户身份打开powershell(以不同的用户身份运行>以服务帐户身份验证),保持该powershell实例打开将允许计划任务按预期运行。但是,如果关闭powershell实例,计划的任务将失败。这显然是不可行的,因为该脚本的目标是在运行powershell脚本时,在没有服务帐户(或任何帐户)登录windows服务器的情况下按计划运行。
您遇到的问题是环境变量。在以用户身份运行与以机器身份运行的过程中 PSModulePath 环境变量更改为包含用户范围的模块安装的用户目录。你应该安装 PowerCLI 机器范围。
PSModulePath
PowerCLI
备选方案(假设您的服务帐户具有管理员权限):
$Env:PSModulePath
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'