Переменная среды может устанавливать, но не может печатать, если только один раз выполняется в PowerShell? - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу set значение файла в качестве переменной среды.Я могу установить его в переменную окружения, проверив его из командной строки.

Param(
    [Parameter(Mandatory)] [string] $FilePath,
    [Parameter(Mandatory)] [string] $Key,
    [Parameter(Mandatory)] [string] $Variable_Name
)

$Found = $False
$FileContents = switch -File $FilePath {
    $Key    { $Found = $True }
    default {
        if ($Found) {
            $_.Substring(1);
            break
        }
    }
}
$FileContents

[Environment]::SetEnvironmentVariable("$Variable_Name", "$FileContents", 1)
[Environment]::SetEnvironmentVariable("$Variable_Name", "$FileContents", "User")

Мой файл выглядит следующим образом.

Name
    Gerry
Class
    Elementary

Я ожидаю, что я хочу напечатать значение имени переменной, которое является этим форматом.Например, я хочу прочитать значение Name и установить его на environment variable, поэтому, если я хочу напечатать переменную окружения, я должен получить это значение: Gerry

Я создаю cmd file для получения этого значения.

set logfile=C:\Users\log.txt

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -File C:\Users\Test1.ps1 -FilePath C:\Users\INFO -Key "Name" -Variable_Name N1

echo %N1% > "%logfile%"

Я не могу получить значение, если я выполню скрипт только один раз.Мой файл журнала выглядит следующим образом:

Эхо включено

Но после закрытия cmd и повторного выполнения я могу получить значение, равное Gerry.Есть ли способ решить эту проблему?Я хочу получить значение, как только я выполню скрипт.

Или есть другой способ сохранить значение как .cmd, поэтому внутри cmd файла будет такой set @Variable_Name Value, тогда когда я выполню этоcmd файл, я могу получить значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...