保存环境:驱动器,然后还原

时间:2015-10-22 14:25:28

标签: powershell virtual-drive

我正在从powershell控制台运行多个脚本。这些脚本在env:驱动器中添加/修改变量。在运行每个脚本之间,我想将env:驱动器重置为打开控制台时的状态。有没有办法保存/复制env:驱动器,然后稍后将其复制回来?

2 个答案:

答案 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-EnvironmentBlockPop-EnvironmentBlock在这里很有用。 "推"保存当前环境变量并将其推送到堆栈。 "流行#34;从堆栈中删除以前的状态并恢复它。所以你可能会这样做

Push-EnvironmentBlock -Description "Before running script.ps1"
.\script.ps1
Pop-EnvrionmentBlock