2015-09-04 76 views
0

有沒有辦法在PowerShell中獲取所有當前環境變量的副本?我想要做的就是在時間上的特定點得到的$env副本,運行批處理腳本,做了一堆set命令,然後看$env再次檢查了什麼變化。然後我會確定哪些環境變量已經重新設定,更改或取消,然後運行適當的setx命令(或[Environment]::SetEnvironmentVariable($NAME, $value, 'User')),以使已經在進程改爲永久用戶變化的東西。Powershell檢查什麼環境變量已經改變

我已經試過在$env上撥打.clone(),但沒有奏效。關於如何獲得$env副本的任何想法或關於如何完成上述描述的一般想法?對於PowerShell新手的建議將不勝感激。

+0

使用'env:'驅動器中的項目? –

+0

你如何ENV的'副本:'? – JoshAdel

回答

2

只需將Env:驅動器檢索到變量中。

$envVars = Get-ChildItem Env: 

我寫了一些功能,這可能是對你有用的爲好,在這篇文章中:

Windows IT Pro: Take Charge of Environment Variables in PowerShell

我在文章中提出了一些功能:Get-Environment(同爲Get-ChildItem Env:,但包括爲了完整),Restore-Environment(恢復環境的保存的副本),並Invoke-CmdScript(運行cmd.exe shell腳本[批處理文件],增加了環境變量,並使其在PowerShell中可用)。

1

可能有更合適的方法來做到這一點,但這應該工作。

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