[英]How do I get powershell run from a scheduled tasks to pick up the newest environment variables
我有一個計划任務,該任務以系統用戶身份運行Powershell腳本。 一切都很好,除了它看起來沒有選擇最新的環境變量之外。
我已驗證問題環境變量是“系統變量”,而不僅僅是我的用戶變量。
在計划的任務中,我已將PowerShell指定為命令,並提供了如下參數:
-command "& 'myscript' 'my args'"
該腳本可以運行,但是我無法導入模塊,因為似乎預定任務正在使用舊環境。
“本地服務”用戶可以看到更新的變量,但系統用戶看不到。
如何使用setx設置環境變量?
您可以使用以下內容以交互方式驗證變量:
在提升的命令提示符下,我使用了setx / m test testvalue
然后,我使用psexec以系統用戶身份運行psexec -i -s powershell.exe -noexit
: psexec -i -s powershell.exe -noexit
在打開的powershell中,我可以讀取變量:
PS C:\Windows\system32> $env:test
testvalue
更新
我確認從調度程序中看不到最新的環境變量。 但是,重新啟動后,這是可行的。 關於超級用戶的帖子建議,殺死所有taskeng.exe
應該足夠,但這在我的2008R2服務器上不起作用。
我的猜測是在計划服務啟動時讀取注冊表值,而不在每次任務運行時重新加載注冊表值。 仍然沒有解釋為什么本地服務帳戶可以訪問變量。
解決方法是您應該能夠閱讀環境。 直接從注冊表中獲取價值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.