无法刷新 Start-Job 块内的 $env:variable
Can not refresh $env:variable inside of Start-Job block
我正在尝试在母脚本中添加一个控制器。它必须检查 $Env:var 的状态并根据值做一些事情。问题是我无论如何都无法刷新它。它在执行开始时捕获值,然后 $Env:var 保持静态,尽管 $Env:var 在 Start-Job 块之外发生了什么。
Start-Job -Name Controller -scriptblock {
while($true){
if ($Env:var -eq 100){
# lot of different stuff
}
Start-Sleep -Seconds 5
}
}
不幸的是,我在我的环境中受限于 PS 3.0。
的确,$Env
环境变量是在启动 PowerShell 进程后设置的,并且在值更改时不会刷新。
如果环境变量在 PowerShell 之外更改,您必须直接从注册表中读取它们以获取当前值。基地位置是:
系统环境变量
Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
用户环境变量
Get-Item HKCU:\Environment
我正在尝试在母脚本中添加一个控制器。它必须检查 $Env:var 的状态并根据值做一些事情。问题是我无论如何都无法刷新它。它在执行开始时捕获值,然后 $Env:var 保持静态,尽管 $Env:var 在 Start-Job 块之外发生了什么。
Start-Job -Name Controller -scriptblock {
while($true){
if ($Env:var -eq 100){
# lot of different stuff
}
Start-Sleep -Seconds 5
}
}
不幸的是,我在我的环境中受限于 PS 3.0。
的确,$Env
环境变量是在启动 PowerShell 进程后设置的,并且在值更改时不会刷新。
如果环境变量在 PowerShell 之外更改,您必须直接从注册表中读取它们以获取当前值。基地位置是:
系统环境变量
Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
用户环境变量
Get-Item HKCU:\Environment