수색…


소개

자동 변수는 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]) 를 통해 제거 할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow