Powershell检查哪些环境变量已更改

时间:2015-09-04 20:53:32

标签: powershell

有没有办法在PowerShell中获取所有当前环境变量的副本?我想要做的是在特定时间点获取$env的副本,运行执行大量set命令的批处理脚本,然后再次查看$env并检查发生了什么变化。然后我将确定新设置,更改或取消设置的环境变量,然后运行相应的setx命令(或[Environment]::SetEnvironmentVariable($NAME, $value, 'User')),以使进程中已更改的内容变为持久用户更改。

我尝试在.clone()上调用$env,但这不起作用。关于如何获得$env的副本或关于如何完成上述描述的一般想法的任何想法?对powershell新手的建议将不胜感激。

2 个答案:

答案 0 :(得分:2)

只需将Env:驱动器检索到变量中即可。

$envVars = Get-ChildItem Env:

我写了一些可能对你有用的函数,在本文中:

Windows IT Pro: Take Charge of Environment Variables in PowerShell

我在文章中介绍了一些功能:Get-Environment(与Get-ChildItem Env:相同,但为了完整性而包括在内),Restore-Environment(恢复已保存的环境副本)和{{1 (运行Invoke-CmdScript shell脚本[批处理文件],添加环境变量并使它们在PowerShell中可用。)

答案 1 :(得分:1)

可能有更合适的方法,但这应该有效。

$a = @{}
Get-ChildItem env: | % { $a[$_.Name] = $_.Value }