gpt4 book ai didi

python - 通过调用打印 $env :myVar=myvalue 的 python 脚本在 powershell 中设置环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:44 25 4
gpt4 key购买 nike

我有一些旧版 python 脚本,用于管理我在 Linux (bash) 和 Windows (cmd.exe) 上运行的所有程序和插件的 shell 环境。我想将其移植到 powershell。

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

在 Bash 中,我可以使用 bash 函数调用 python 脚本,该脚本将导出 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'

最佳答案

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

& 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"') }

关于python - 通过调用打印 $env :myVar=myvalue 的 python 脚本在 powershell 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com