0

我有一些遗留的 python 脚本来管理我在 Linux (bash) 和 windows (cmd.exe) 上运行的所有程序和插件的 shell 环境。我想把它移植到powershell。

如何通过调用打印 $env:myVar=myvalue 并导致我的环境变量保留在 powershell 中的 python 脚本在 powershell 中设置环境变量。

在 Bash 中,我可以使用 bash 函数调用我的 python 脚本,该脚本将 export var=value 打印到 stdout,该函数将在我的 shell 中设置环境变量。这也可以通过调用 .bat 文件在 windows cmd shell 中工作。

我无法弄清楚如何在 powershell 中执行此操作。我认为应该是这样的:

设置变量.ps1:

function SETVAR {c:\python26\python.exe varconfig.py }

varconfig.py:

import sys  
print >> sys.stdout, '$env:myVar=foo'
4

1 回答 1

0

你需要这样的东西吗?它运行您的脚本,使用每个返回的行来设置环境变量,使用与您的示例中相同的格式。

& c:\python26\python.exe varconfig.py | % { 
    #Expecting all result to be $env:NAME=VALUE for variables that need to be set
    $a = $_ -replace '\$env:(\w+)=(.*)', '$1;$2' -split ';'

    #Setting variables at process-level. Can be replaced with "User" and "Machine" for permanent variables
    [System.Environment]::SetEnvironmentVariable($a[0],$a[1], "Process")
}

仅对于流程级别,您也可以简单地使用它。它会将引号添加到您的脚本中的值,然后简单地执行它。

& c:\python26\python.exe varconfig.py | % { iex $($_ -replace '=(.*)', '="$1"') }
于 2013-11-03T10:15:11.393 回答