자동변수
-
[PowerShell] 자동변수(Automatic Variable) - 14. $PWD, $ShellId, $StackTrace, $switch, $thisShell & CMD/PowerShell 2023. 11. 26. 15:29
$PWD 현재 파워셸을 실행중인 세션의 경로를 의미한다. $ShellId 현재 파워셸의 식별자를 의미한다. Windows 버전과 Core 구분 없이 Microsoft.PowerShell로 출력한다. $StackTrace 가장 최근 발생한 오류에 대한 StackTrace 정보가 저장된다. stacktrace.ps1 이름의 파일 생성 후 아래와 같이 작성한다. $action = { Write-Host 'try divied by zero' 1 / 0 } $action.Invoke() $switch switch 블록 내에서만 선택 case 열거자 자동변수. 아래 코드는 $switch 변수를 통해 입력받은 case 객체를 화면에 출력한다. function Test-Switch { param ( [string] $..
-
[PowerShell] 자동변수(Automatic Variable) - 12. $PSCulture, $PSDebugContext, $PSEdition, $PSHOME, $PSItemShell & CMD/PowerShell 2023. 11. 25. 14:16
$PSCulture 현재 문화권을 반영한다. 한국어판 Windows 에서는 별도 설정하지 않았다면 ko-KR로 출력된다. Set-Culture 함수로 문화권을 변경할 수 있다. 설정 후 다음 Session부터 설정한 문화권으로 파워셸이 동작한다. Set-culture -CultureInfo en-US $PSDebugContext 디버깅하는 동안 디버깅에 대한 정보가 해당 변수에 포함된다. 아래 예제 실행 후, $PSDebugContext 를 입력하면 스크립트 블록을 실행한 기록이 표기된다. 아래 스크립트 실행 후 $PSDebugContext 를 입력해보자. 스크립트를 실행했던 내역이 표시될 것이다. Set-PSDebug -Trace 2; foreach ($i in 1..3) {$i} $PSEdition ..
-
[PowerShell] 자동변수(Automatic Variable) - 11. $PSBoundParameters, $PSCmdlet, $PSCommandPathShell & CMD/PowerShell 2023. 11. 25. 12:35
$PSBoundParameters 스크립트 또는 함수에 전달된 파라메터를 의미한다. 테스트를 위해 $PROFILE 프로필에 아래와 같은 함수를 추가하자 function Test1 { param ( $a, $b ) Write-Host 'Test1' $PSBoundParameters } function Test2 { param ( $a, $b ) Write-Host 'Test2' Test1 @PSBoundParameters } $PROFILE을 다뤄본 적 없다면, 아래 글을 참고하여 생성할 수 있다. [PowerShell 기초] 6. Powershell 프로필 설정 :: 또치의 삽질 보관함 (tistory.com) [PowerShell 기초] 6. Powershell 프로필 설정 Windows 환경의 Pow..
-
[PowerShell] 자동변수(Automatic Variable) - 10. $null, $PID, $PROFILEShell & CMD/PowerShell 2023. 11. 25. 11:41
$null "값 없음"을 의미하는 값. 하지만 존재자체는 하기 때문에 배열에 포함되어 있을 경우 요소의 1개로 인식된다. "one", $null, "three" | ForEach-Object { "Hello " + $_} $PID 현재 PowerShell 세션을 호스팅하는 프로세스의 PID(프로세스 식별자) 번호를 나타낸다. $PID 작업관리자의 [자세히] 메뉴에 존재하는 PID 값이다. $PROFILE 현재 사용자 및 현재 호스트 애플리케이션에 대한 PowerShell 프로필의 전체 경로를 의미한다. 해당 경로에 프로필 ps1 파일에 함수나 변수값을 미리 지정해두면, 파워셸을 실행할 때마다 사용할 수 있다. $PROFILE을 파워셸을 보다 편리하게 사용할 수 있는 방법은 아래 포스트로 정리한 바 있다...
-
[PowerShell] 자동변수(Automatic Variable) - 9. $Matches, $MyInvocation, $NestedPromptLevelShell & CMD/PowerShell 2023. 11. 12. 13:05
$Matches -match, -notmatch 연산결과에서 -match 연산결과가 true일 때, $Matches에 해시테이블 형식으로 담긴다. 아래 이미지는 사용예시이다. 'helloworld' -match 'hello[abc]orld' 는 정규식 연산 규칙에 의해 일치하지 않으므로 $Matches 에선 아무 데이터가 들어가지 않았다. 'helloworld' -match 'hello[wyx]orld' 에선 -match에 일치결과가 있으므로 $Matches 에 값이 담긴것을 확인할 수 있다. match 이후 match 연산에 어긋나는 결과가 있다해도 $Matches 변수를 초기화하진 않는다. $MyInvocation 이름, 매개 변수, 매개 변수 값과 같은 현재 명령에 대한 정보와 명령이 시작, 호출 ..
-
[PowerShell] 자동변수(Automatic Variable) - 8. $LASTEXITCODEShell & CMD/PowerShell 2023. 11. 6. 22:03
$LASTEXITCODE $LASTEXITCODE는 exit 명령어 뒤에 입력한 숫자값을 대입하는 자동변수이다. script 파일에서 exit 할때 입력한 exitcode 값이 대입된다. 예를들어, test.ps1 파일을 아래와 같이 생성했다면 $LASTEXITCODE 에 123 값이 입력된다. Write-Host 'hello world' exit 123 exit 만 입력한 채로 종료된다면 $LASTEXITCODE는 0이 대입된다. Write-Host 'hello world' exit 별도의 exit 선언없이 script를 실행했다면, 오류가 발생했어도 $LASTEXITCODE 에 영향을 주진 않는다. 이 부분은 이어서 설명할 -Command 를 통한 실행방식과 큰 차이가 있다. Write-Host 'h..
-
[PowerShell] 자동변수(Automatic Variable) - 7. $IsCoreCLR, $IsLinux, $IsMacOS, $IsWindowsShell & CMD/PowerShell 2023. 11. 5. 11:52
$IsCoreCLR (PowerShell Core 전용) 실행중인 Powershell이 Core 버전인지 아닌지 확인할 때 사용할 수 있는 Boolean 변수 아래 Test() 함수를 생성 후 실행시 PowerShell Core에선 `core` 라는 메시지를 확인할 수 있다. function Test() { if($IsCoreCLR) { Write-Host 'core' } else { Write-Host 'not core' } } 예측가능한 결과가 나왔지만 $IsCoreCLR 값은 Windows PowerShell 자체에서 유효하지 않을 수 있다. $IsCoreCLR.GetType() 를 실행하면 Core 기반 PowerShell에선 아래 이미지와 같이 정상적인 정보가 표출된다. 반면, Windows 버..
-
[PowerShell] 자동변수(Automatic Variable) - 6. $HOME, $Host, $inputShell & CMD/PowerShell 2023. 11. 5. 09:53
$HOME 사용자 홈 경로값이다. Windows 기준으로 기본 설정을 건드리지 않는 한 C:\Users\{계정} 위치가 표기된다. $Host 현재 사용중인 Powershell의 정보를 표기한다. $input $foreach와 마찬가지로 열거자를 가리키는 자동변수이다. $foreach, $input, $switch 와 같은 열거자 자동변수는 가급적 사용하지 않는 것을 권장하고 있다. https://learn.microsoft.com/ko-kr/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.3#using-enumerators 아래 소스코드는 입력받은 pipline 을 받아 그대로 화면에 ..