따옴표는 문자열을 지정하는 데 사용된다. 문자열을 작은따옴표 또는 큰따옴표로 묶을 수 있는데 두개의 사용법의 차이는 다음과 같다.
$str = 'world'
Write-Host "hello $str" # hello world
Write-Host 'hello $str' # hello $str
`(백틱)은 PowerShell에서 이스케이프 문자로 작동한다. 문자열이나 스크립트에서 큰따옴표를 이스케이프 처리하는 데 사용할 수 있다.
Write-Host "`"Welcome to PowerShell Tutorial`""
## Output
## "Welcome to PowerShell Tutorial"
또는 작은따옴표를 사용해서 큰따옴표를 이스케이스 할 수 있다.
Write-Host '"Welcome to PowerShell Tutorial"'
## Output
## "Welcome to PowerShell Tutorial"
문자열을 큰따옴표로 묶어 작은따옴표를 이스케이프할 수 있다.
Write-Host "'Welcome to PowerShell Tutorial'"
## Output
## 'Welcome to PowerShell Tutorial'
파이프라인으로 전달된 Array 개체를 Foreach-Object cmdlet을 사용하면 각 개체에 대해 특정 작업을 실행할 수 있다. $_ 를 사용하면 Foreach-Object 내에서 각 개체의 속성에 접근할 수 있다.
Get-Process | Select-Object -First 3 | ForEach-Object{
"Process Name : $_.ProcessName"
}
## Output
## Process Name : System.Diagnostics.Process (Aac3572DramHal_x86).ProcessName
## Process Name : System.Diagnostics.Process (Aac3572MbHal_x86).ProcessName
## Process Name : System.Diagnostics.Process (Aac3572MbHal_x86).ProcessName
위 스크립트에서 $_를 사용해 각 개체의 그런데 큰따옴표는 변수가 실제 값으로 치환된 후 출력되어야 하는데 위 스크립트의 실행결과를 보면 실제 변수로 인식된 부분은 $_부분만 변수로 인식되어 .ProcessName 문자열이 출력된다. 따라서 이경우 $( )로 해당 부분을 묶어 하나의 변수로 인식되어야 한다는 것을 알려준다.
Get-Process | Select-Object -First 3 | ForEach-Object{
"Process Name : $($_.ProcessName)"
}
## Output
## Process Name : Aac3572DramHal_x86
## Process Name : Aac3572MbHal_x86
## Process Name : Aac3572MbHal_x86