다음 스 니펫이 있다고 가정하십시오.
$assoc = New-Object psobject -Property @{
Id = 42
Name = "Slim Shady"
Owner = "Eminem"
}
Write-host $assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner
이 스 니펫이 다음과 같이 표시 될 것으로 예상됩니다.
42 - Slim Shady - Eminem
그러나 대신 다음과 같이 표시됩니다.
42 + - + Slim Shady + - + Eminem
+
연산자가 문자열과 변수를 연결하는 데 적합하지 않다고 생각합니다 .
PowerShell을 사용하여 어떻게 접근해야합니까?
답변
Write-Host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
참고 항목 의 Windows PowerShell 언어 사양 버전 3.0 , P34, 하위 식 확장을.
답변
작은 따옴표와 큰 따옴표의 차이점을 언급 한 사람은 없습니다. (PowerShell 4를 사용하고 있습니다).
@Ben이 말했듯 이이 작업을 수행 할 수 있습니다.
$name = 'Slim Shady'
Write-Host 'My name is'$name
-> My name is Slim Shady
또는 당신은 이것을 할 수 있습니다 :
$name = 'Slim Shady'
Write-Host "My name is $name"
-> My name is Slim Shady
작은 따옴표는 리터럴을위한 것이므로 문자열을 이와 같이 정확하게 출력하십시오. 큰 따옴표는 변수, 특수 문자 등의 일부 전처리를 원할 때 사용됩니다.
그래서:
$name = "Marshall Bruce Mathers III"
Write-Host "$name"
-> Marshall Bruce Mathers III
이므로:
$name = "Marshall Bruce Mathers III"
Write-Host '$name'
-> $name
( http://ss64.com/ps/syntax-esc.html 참조하기에 좋습니다).
답변
한 가지 방법은 다음과 같습니다.
Write-host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
다른 하나는 다음과 같습니다.
Write-host ("{0} - {1} - {2}" -f $assoc.Id,$assoc.Name,$assoc.Owner )
또는 그냥 (그러나 나는 그것을 좋아하지 않습니다)) :
Write-host $assoc.Id " - " $assoc.Name " - " $assoc.Owner
답변
당신은 또한 사용할 수 있습니다 -join
예 :
$name = -join("Jo", "h", "n");
“John”을 $ name에 할당합니다.
따라서 한 줄로 출력하려면 다음을 수행하십시오.
Write-Host (-join("Jo", "h", "n"))
답변
인쇄하고자하는 것을 괄호로 묶어보십시오.
Write-host ($assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner)
귀하의 코드는에 전달되는 많은 매개 변수로 해석됩니다 Write-Host
. 괄호 안에 묶으면 값이 연결되고 결과 값이 단일 매개 변수로 전달됩니다.
답변
다른 옵션은 다음과 같습니다.
$string = $assoc.ID
$string += " - "
$string += $assoc.Name
$string += " - "
$string += $assoc.Owner
Write-Host $string
“최상의”방법은 아마도 CB가 제안한 방법 일 것입니다.
Write-host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
답변
cmdlet에 다른 매개 변수로 처리되지 않도록 식을 괄호 안에 넣어야합니다.
Write-host ($assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner)