Poweshell - 运行 bat/cmd 文件后获取环境变量

问题描述 投票:0回答:1

我想从 powershell 运行一个 cmd 文件并通过该 cmd 文件检索一个设置的变量

我的脚本返回一个 null/空变量

Start-Process -FilePath "cmd.exe" -ArgumentList "/c 'my.cmd'" -Wait
$envVariable = [System.Environment]::GetEnvironmentVariable("my-variable", [System.EnvironmentVariableTarget]::Process)
Write-Host "Environment Variable Value: $envVariable"

.cmd 文件包含这样的行

set my-variable=2.6.4.6

如何从 powershell 获取该值?

感谢您的帮助

powershell batch-file environment-variables
1个回答
0
投票

问题


假设您的批处理文件在

cmd.exe

设置其环境变量之前使用SETLOCAL - 如果其目的是为托管

SET
会话设置环境变量,则会出现这种情况 - 您可以使用以下方法:
通过

cmd.exe
    CLI (
  • cmd.exe

    ) 调用批处理文件,并在调用后单独使用

    cmd /c
    命令,该命令会列出执行批处理文件后的所有进程级环境变量。
    
    
    您可以捕获此列表并将其与 

    PowerShell
  • 看到的进程级环境变量进行比较,这会告诉您添加或更新了哪些变量,甚至删除了哪些变量。
  • 注意:下面仅关注 added

      updated
    • 变量;还需要做更多的工作来传播环境变量的removal
    • SET
© www.soinside.com 2019 - 2024. All rights reserved.