我正在从powershell控制台运行多个脚本。这些脚本在env:
驱动器中添加/修改变量。在运行每个脚本之间,我想将env:
驱动器重置为打开控制台时的状态。有没有办法保存/复制env:
驱动器,然后稍后将其复制回来?
答案 0 :(得分:1)
最简单的方法是为每个脚本启动另一个进程。而不是
.\foo.ps1
只需使用
powershell -file .\foo.ps1
然后每个脚本都有自己的进程,因此它自己的环境要乱七八糟。当然,如果这些脚本还修改了诸如全局变量之类的东西,那么这并不起作用。
另一方面,保存环境状态非常简单:
$savedState = Get-ChildItem Env:
再次恢复:
Remove-Item Env:*
$savedState | ForEach-Object { Set-Content Env:$($_.Name) $_.Value }
答案 1 :(得分:1)
您可能需要查看PowerShell Community Extensions模块。有一些命令可以使管理环境变量更容易。特别是,Push-EnvironmentBlock
和Pop-EnvironmentBlock
在这里很有用。 "推"保存当前环境变量并将其推送到堆栈。 "流行#34;从堆栈中删除以前的状态并恢复它。所以你可能会这样做
Push-EnvironmentBlock -Description "Before running script.ps1"
.\script.ps1
Pop-EnvrionmentBlock