如何从计划任务中运行powershell以获取最新的环境变量

时间:2014-08-25 11:13:11

标签: powershell scheduled-tasks

我有一个计划任务,它以系统用户身份运行powershell脚本。这一切都很好,除非它看起来没有获得最新的环境变量。

我已经验证了有问题的环境变量是“系统变量”,而不仅仅是我的用户变量。

在计划任务中,我已将PowerShell指定为命令,并提供了如下参数:

-command "& 'myscript' 'my args'"

脚本运行,但我无法导入模块,因为计划任务似乎正在使用旧环境。

“本地服务”用户可以看到更新的变量,但不能看到系统用户。

1 个答案:

答案 0 :(得分:1)

如何设置环境变量?使用setx?
您可以使用以下内容以交互方式验证变量:
在提升的命令提示符下,我使用了setx / m test testvalue
然后我使用psexec作为系统用户运行powershell: psexec -i -s powershell.exe -noexit
在打开的PowerShell中,我可以读取变量:

PS C:\Windows\system32> $env:test
testvalue

<强>更新
我确认从调度程序中看不到最新的环境变量。但重启后,这是有效的。 A post on superuser建议删除所有taskeng.exe应该足够了,但这对我的2008R2服务器无效。

我的猜测是,在计划服务启动时读取注册表值,而不是在每次任务运行时重新加载。仍然没有解释为什么本地服务帐户可以访问变量......

作为一种解决方法,您应该能够阅读环境。值直接来自注册表