programing

PowerShell 문자열 형식 지정:콜론 문자로 인해 변수 값이 비어 있는 이유는 무엇입니까?

bestprogram 2023. 8. 10. 18:57

PowerShell 문자열 형식 지정:콜론 문자로 인해 변수 값이 비어 있는 이유는 무엇입니까?

차세대 WinRM 및 PowerShell 3에 어떤 변화가 있을 것인지 살펴보던 중 변경 사항 목록을 살펴보던 중 이전에 본 적이 없는 것을 보게 되었습니다.

그 예는 다음과 같습니다.

$server = "msp42"
$status = "online"
"$server: $status"

결과 출력은 다음과 같습니다.

온라인.

네, 저는 그런 일은 처음이고 대장이 왜 문제를 일으켰는지 전혀 모르겠어요.이 문서에서 제안된 해결책은 공백을 두는 것이었습니다(이는 출력을 변경하기 때문에 어리석은 일입니다).

"$server : $status"

또 다른 제안은 다음과 같은 형식을 사용하는 것이었습니다(새로운 형식!).

"${server}: $status"

마지막 제안은 제가 항상 익숙하고 사용하는 표현을 만드는 것이었습니다.

"$($server): $status"

PowerShell 전문가들에게 다음과 같은 질문을 드립니다.

  1. 저 대장은 대체 뭐하는 거지?효과가 있나요?

  2. 도대체 뭐가.${variable}구문?대장을 다루는 것이 엄격한가요, 아니면 깔끔한 특징을 가지고 있나요?

콜론은 변수 이름에 유효한 문자입니다(예:$Env:PATH,기타.

다음 옵션도 사용할 수 있습니다.

$server`: $status

또는 경우에 따라 형식 문자열이 더 읽기 쉽습니다.

'{0}: {1}' -f $server, $status

다시 대장으로.PSDrive의 항목에 해당하는 변수 이름에는 특별한 경우가 있습니다.

$Env:Foo           # equivalent to the contents of Env:\Foo
$Function:C:       # equivalent to the contents of Function:\C:
${C:\autoexec.bat} # ... you get the picture

구문${}구문의 다른 부분에 예약된 문자를 사용하는 변수 이름을 지정할 수 있습니다.C#과 비슷하지만 더 강력하다고 볼 수 있습니다.@식별기 앞에서.위의 a 위치 참조\변수 이름에 사용됩니다.$Drive:Item드라이브의 현재 컨테이너(또는 비전자식 컨테이너의 루트)에만 작동합니다.Env,Alias또는Function).

변수 이름이 일반적으로 잘못된 구문인 다른 예:

PS> $+
The term '$+' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ $+
+ ~~
    + CategoryInfo          : ObjectNotFound: ($+:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS> ${+} = 5
PS> ${+}
5
PS> Get-Variable +

Name                           Value
----                           -----
+                              5

언급URL : https://stackoverflow.com/questions/8386219/powershell-string-formatting-why-is-the-colon-character-causing-my-variables-v