Я хочу 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
файл, я могу получить значение.