Как в сценарии PowerShell получить значение переменной среды, имя которой содержит круглые скобки?
Чтобы усложнить ситуацию, имена некоторых переменных содержит круглые скобки, в то время как другие имеют похожие имена без скобок. Например (используя cmd.exe
):
C:\>set | find "ProgramFiles"
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
Мы видим, что % ProgramFiles%
не то же самое, что % ProgramFiles (x86)%
.
Мой код PowerShell не работает странным образом, потому что он игнорирует часть имени переменной среды после круглых скобок. Так как это происходит в соответствии с именем другой , но существующей переменной среды, я не ошибаюсь, я просто получаю правильное значение не той переменной.
Вот тестовая функция в сценарии PowerShell. язык, чтобы проиллюстрировать мою проблему:
function Do-Test
{
$ok = "C:\Program Files (x86)" # note space between 's' and '('
$bad = "$Env:ProgramFiles" + "(x86)" # uses %ProgramFiles%
$d = "${ Env:ProgramFiles(x86) }" # fail (2), LINE 6
# $d = "$Env:ProgramFiles(x86)" # fail (1)
if ( $d -eq $ok ) {
Write-Output "Pass"
} elseif ( $d -eq $bad ) {
Write-Output "Fail: (1) %ProgramFiles% used instead of %ProgramFiles(x86)%"
} else {
Write-Output "Fail: (2) some other reason"
}
}
И вот результат:
PS> Do-Test
Fail: (2) some other reason
Есть ли простое изменение, которое я могу внести в строку 6 выше, чтобы получить правильное значение% ProgramFiles (x86)%?
ПРИМЕЧАНИЕ: В тексте В этом посте я использую синтаксис командного файла для переменных среды в качестве удобного сокращения. Например,% SOME_VARIABLE% означает " любой html-код после этого не выполняется. document.write (" Пока я пытался вставить iframe с помощью documnet.write в IE, мне это удалось. Но любой html-код после этого не выполняется. Здесь строка «Bye Bye» не выполняется. Для мгновенной проверки вы можете ввести URL-адрес вашего браузера. После проб и ошибок я обнаружил, что если закрою тег iframe следующим образом, он работает. Теперь проблема в том, что «У меня нет возможности изменить document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");
javascript:document.write("<div>Hello</div><iframe ..../><div>Bye Bye</div>");
<iframe ...></iframe> instead of <iframe ... />
на
". Жду вашего доброго совета.