[powershell] PowerShell에서 문자열과 변수를 어떻게 연결합니까?

다음 스 니펫이 있다고 가정하십시오.

$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)