簡體   English   中英

我如何從計划的任務中運行Powershell來獲取最新的環境變量

[英]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 -noexitpsexec -i -s powershell.exe -noexit
在打開的powershell中,我可以讀取變量:

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

更新
我確認從調度程序中看不到最新的環境變量。 但是,重新啟動后,這是可行的。 關於超級用戶的帖子建議,殺死所有taskeng.exe應該足夠,但這在我的2008R2服務器上不起作用。

我的猜測是在計划服務啟動時讀取注冊表值,而不在每次任務運行時重新加載注冊表值。 仍然沒有解釋為什么本地服務帳戶可以訪問變量。

解決方法是您應該能夠閱讀環境。 直接從注冊表中獲取價值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM