我正在尝试为我们的VMware视界环境配置一些powershell / view powercli脚本。我有一个PowerShell脚本,可以正常查询地平线实例并检查机器状态。但是,当我尝试使用服务帐户将其作为计划任务运行时,似乎无法导入模块,因为命令无法识别(“无法将术语'Connect-HVServer'识别为cmdlet的名称,功能,脚本文件或可操作程序。“)
我也试过了个人资料,没关系。
我观察到的是,如果我以相关用户身份打开PowerShell(以不同用户身份运行>作为服务帐户进行身份验证),则将PowerShell实例保持打开状态将允许计划任务按预期运行。但是,如果我关闭powershell实例,则计划任务将失败。这显然是不可行的,因为这个脚本的目标是在PowerShell脚本运行时没有将服务帐户(或任何帐户)登录到Windows服务器的时间表上运行。
答案 0 :(得分:1)
您遇到的问题是环境变量。在作为用户运行而不是作为计算机运行的过程中,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'