수색…
소개
자동 변수는 Windows PowerShell에서 만들고 유지 관리합니다. 하나는 책의 어떤 이름이라도 변수를 호출 할 수있는 능력이 있습니다. 유일한 예외는 이미 PowerShell에서 관리하고있는 변수입니다. 이러한 변수는 의심의 여지없이 PowerShell에서 함수 다음에 사용하는 가장 반복적 인 개체입니다 (예 : $? - 마지막 작업의 성공 / 실패 상태를 나타냄)
통사론
-
$$
- 세션에서 수신 한 마지막 행의 마지막 토큰을 포함합니다. -
$^
- 세션에서 수신 한 마지막 행의 첫 번째 토큰을 포함합니다. -
$?
- 마지막 작업의 실행 상태를 포함합니다. -
$_
- 파이프 라인의 현재 개체를 포함합니다.
$ pid
현재 호스팅 프로세스의 프로세스 ID를 포함합니다.
PS C:\> $pid
26080
부울 값
$true
와 $false
는 논리적 TRUE와 FALSE를 나타내는 두 변수입니다.
달러 기호를 첫 번째 문자 (C #과 다른 문자)로 지정해야합니다.
$boolExpr = "abc".Length -eq 3 # length of "abc" is 3, hence $boolExpr will be True
if($boolExpr -eq $true){
"Length is 3"
}
# result will be "Length is 3"
$boolExpr -ne $true
#result will be False
코드에서 참 / 거짓 부울을 사용할 때 $true
또는 $false
를 쓰지만 Powershell이 부울을 반환하면 True
또는 False
$ null
$null
은 부재 또는 정의되지 않은 값을 나타내는 데 사용됩니다.
$null
은 배열에서 빈 값을위한 빈 자리 표시 자로 사용할 수 있습니다.
PS C:\> $array = 1, "string", $null
PS C:\> $array.Count
3
ForEach-Object
소스와 동일한 배열을 사용하면 $ null을 포함한 세 항목을 모두 처리합니다.
PS C:\> $array | ForEach-Object {"Hello"}
Hello
Hello
Hello
조심해! 이 있음을 의미 ForEach-Object
도 처리합니다 $null
자체로 모든 :
PS C:\> $null | ForEach-Object {"Hello"} # THIS WILL DO ONE ITERATION !!!
Hello
고전적인 foreach
루프와 비교하면 매우 예상치 못한 결과입니다.
PS C:\> foreach($i in $null) {"Hello"} # THIS WILL DO NO ITERATION
PS C:\>
$ OFS
Output Field Separator라는 변수는 배열을 문자열로 변환 할 때 사용되는 문자열 값을 포함합니다. 기본적으로 $OFS = " "
( 공백 )이지만 변경할 수 있습니다.
PS C:\> $array = 1,2,3
PS C:\> "$array" # default OFS will be used
1 2 3
PS C:\> $OFS = ",." # we change OFS to comma and dot
PS C:\> "$array"
1,.2,.3
$ _ / $ PSItem
현재 파이프 라인에서 처리중인 개체 / 항목을 포함합니다.
PS C:\> 1..5 | % { Write-Host "The current item is $_" }
The current item is 1
The current item is 2
The current item is 3
The current item is 4
The current item is 5
$PSItem
과 $_
는 동일하고 서로 교환하여 사용할 수 있지만 $_
이 (가) 가장 일반적으로 사용됩니다.
$?
마지막 작업의 상태를 포함합니다. 오류가 없으면 True
로 설정됩니다.
PS C:\> Write-Host "Hello"
Hello
PS C:\> $?
True
오류가 있으면 False
로 설정됩니다.
PS C:\> wrt-host
wrt-host : The term 'wrt-host' 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
+ wrt-host
+ ~~~~~~~~
+ CategoryInfo : ObjectNotFound: (wrt-host:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\> $?
False
$ 오류
가장 최근 오류 객체의 배열입니다. 배열의 첫 번째 배열이 가장 최근 배열입니다.
PS C:\> throw "Error" # resulting output will be in red font
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Error:String) [], RuntimeException
+ FullyQualifiedErrorId : Error
PS C:\> $error[0] # resulting output will be normal string (not red )
Error
At line:1 char:1
+ throw "Error"
+ ~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Error:String) [], RuntimeException
+ FullyQualifiedErrorId : Error
사용법 힌트 : format cmdlet (예 : format-list)에서 $error
변수를 사용할 때는 -Force
스위치를 사용해야합니다. 그렇지 않으면 format cmdlet이 $error
내용을 위에 표시된 방식으로 출력합니다.
오류 항목은 $Error.Remove($Error[0])
를 통해 제거 할 수 있습니다.