Powershell 作为导入模块的计划任务问题,似乎
Powershell as scheduled task issue with importing module, it seems
我正在尝试为我们的 VMware Horizon 环境配置一些 powershell/view powercli 脚本。我有一个 powershell 脚本,可以正常工作以查询 horizon 实例并检查机器状态。但是,当我尝试使用服务帐户将此作为计划任务 运行 时,它似乎无法导入模块,因为无法识别命令 ("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'
我正在尝试为我们的 VMware Horizon 环境配置一些 powershell/view powercli 脚本。我有一个 powershell 脚本,可以正常工作以查询 horizon 实例并检查机器状态。但是,当我尝试使用服务帐户将此作为计划任务 运行 时,它似乎无法导入模块,因为无法识别命令 ("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'