我有一些遗留的python脚本来管理我在Linux(bash)和windows(cmd.exe)上运行的所有程序和插件的shell环境。我想把它移植到powershell。
如何通过调用打印$ env:myVar = myvalue的python脚本在powershell中设置环境变量 并导致我的环境变量在powershell中保留。
在Bash中我可以使用bash函数调用我的python脚本,它将export var = value打印到stdout,该函数将在我的shell中设置环境变量。这也可以通过调用.bat文件在windows cmd shell中起作用。
我无法弄清楚如何在PowerShell中执行此操作。我认为它应该是这样的:
setvar.ps1:
function SETVAR {c:\python26\python.exe varconfig.py }
varconfig.py:
import sys
print >> sys.stdout, '$env:myVar=foo'
答案 0 :(得分:0)
你需要这样的东西吗?它运行你的脚本使用EVERY返回的行来设置环境变量,使用与样本中相同的格式。
& 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"') }