我试图有一个控制器内的母亲脚本。它必须检查$Env:var的状态,并根据值做一些事情。问题是我怎么也刷新不了。它在执行开始时捕获值,然后$Env:var保持静态,尽管在Start-Job块之外的$Env:var发生了什么。
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:SYSTEMCurrentControlSetControlSession ManagerEnvironment"
用户环境变量
Get-Item HKCU:Environment