PowerShell에서 %ProgramFiles(x86)%와 같은 괄호가 있는 환경 변수 이름?
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
%ProgramFiles(x86)%의 정확한 값을 얻기 위해 위의 6행을 간단히 변경할 수 있습니까?
참고: 이 게시물의 텍스트에서 저는 환경 변수에 대한 배치 파일 구문을 편리한 속기로 사용하고 있습니다.예를 들어 %SOME_VARIBLE%는 "이름이 SOME_VARIBLE인 환경 변수의 값"을 의미합니다.PowerShell의 이스케이프된 구문을 제대로 알았다면 이 질문을 할 필요가 없었을 것입니다.
단순합니다. 6행을 변경하여 대괄호 내부의 공백을 제거합니다.
$d = "${Env:ProgramFiles(x86)}" # LINE 6 (NO spaces inside brackets)
()가 포함된 변수를 {}(으)로 묶으면 됩니다.괄호 안에는 공백이 없습니다.
언급URL : https://stackoverflow.com/questions/4653437/environment-variable-names-with-parentheses-like-programfilesx86-in-powers
'source' 카테고리의 다른 글
| 언플러그드에서 행이 소프트 삭제되었는지 확인하는 방법은 무엇입니까? (0) | 2023.08.05 |
|---|---|
| NSUserDefaults의 모든 값을 가져올 수 있는 방법이 있습니까? (0) | 2023.08.05 |
| malloc "double free" 오류의 원인을 찾는 방법은 무엇입니까? (0) | 2023.08.05 |
| docker-compose.yml의 환경 변수 재사용 (0) | 2023.08.05 |
| 노드 JS 버전 번호가 혼동 (0) | 2023.08.05 |