PowerShell의 자동 변수란?

Powershellui Jadong Byeonsulan



PowerShell의 ' 자동 변수 ”는 시스템 관리, 자동화 및 스크립팅 활동에 필수적입니다. 이러한 변수는 PowerShell 런타임에 기본 제공되며 스크립트 또는 명령을 실행하는 동안 특정 정보를 저장하고 참조하는 자리 표시자 역할을 합니다. 이러한 자동 변수를 효과적으로 이해하고 활용하면 PowerShell 스크립트의 효율성과 기능을 크게 향상시킬 수 있습니다.

이 기사는 PowerShell의 '자동 변수' 개념, 그 중요성 및 다양한 시나리오에서 활용하는 방법을 탐구하는 것을 목표로 합니다.







PowerShell의 자동 변수란 무엇입니까?

시작하려면 ''의 정의를 자세히 살펴보겠습니다. 자동 변수 '. 이러한 변수는 사전 정의되며 스크립트 실행 중에 PowerShell에 의해 자동으로 생성됩니다. 이들은 시스템, 명령줄 인수, 스크립트 관련 세부 정보 등에 대한 정보를 제공하는 등 다양한 용도로 사용됩니다.



PowerShell은 여러 '자동 변수'를 제공하며 각 변수는 스크립트 실행에서 고유한 용도로 사용됩니다. 이러한 변수는 다음과 같습니다.



1. $PSVersionTable

PowerShell의 기본 자동 변수 중 하나는 ' $PSVersionTable '. 이 변수를 통해 스크립트 개발자는 사용 중인 PowerShell 버전을 확인할 수 있으며, 이는 특정 기능의 호환성 및 가용성을 고려할 때 중요할 수 있습니다.





다음 속성이 이 변수와 연결됩니다.

PS 버전: PowerShell 버전 번호를 반환합니다.



PS에디션: PowerShell 4 및 이전 버전과 모든 기능을 갖춘 Windows 버전의 PowerShell 5.1의 경우 이 속성의 값은 'Desktop'입니다. 이 특성은 Windows Nano Server 또는 Windows IoT와 같이 설치 공간이 적은 에디션을 위한 Windows PowerShell 5.1뿐만 아니라 PowerShell 6 이상에서 Core의 가치를 가집니다.

GitCommitId: 소스 파일의 GitHub 커밋 ID를 가져옵니다.

너: PowerShell이 ​​사용 중인 컴퓨터 시스템에 대한 정보를 기록합니다.

플랫폼: 운영 체제의 지원 플랫폼을 반환합니다. Unix는 Linux 및 macOS에서 가치가 있습니다. $IsMacOs 및 $IsLinux를 확인하십시오.

PSCompatible 버전: 현재 버전과 호환되는 PowerShell 버전이 반환됩니다.

PSRemotingProtocol버전: PowerShell 원격 관리 프로토콜의 버전 번호를 반환합니다.

직렬화 버전: 직렬화 메서드의 버전을 반환합니다.

WSManStack 버전: WS-Management 스택의 버전 번호를 반환합니다.

$ PSVersionTable

2. $Args

PowerShell의 또 다른 필수 자동 변수는 ' $Args ”, 스크립트 또는 함수에 전달된 명령줄 인수 배열을 포함합니다. 이 변수는 개발자가 스크립트 내에서 제공된 인수를 동적으로 처리하고 조작할 수 있도록 합니다.

함수를 정의할 때 'param' 키워드를 사용하여 매개변수를 선언하거나 함수 이름 뒤에 오는 괄호 안에 쉼표로 구분된 매개변수 목록을 추가할 수 있습니다. 이벤트 작업의 '$Args' 변수는 처리 중인 이벤트의 이벤트 매개변수에 대한 자리 표시자 역할을 하는 개체를 저장합니다.

각각 ( $인수 ~에 $Args ) {
쓰기 호스트 $인수
}

3. $MyInvocation

$MyInvocation ” 변수는 현재 실행 중인 스크립트 또는 절차에 대한 중요한 배경 데이터를 제공합니다. 스크립트 이름, 스크립트 줄 번호, 스크립트가 대화식으로 실행되는지 비대화식으로 실행되는지 여부와 같은 속성을 제공합니다. 이러한 속성은 스크립트 개발자가 분기 논리를 구현하거나 오류 처리 메커니즘을 정의하거나 의미 있는 로깅 및 보고를 생성하는 데 도움이 됩니다.

$ 내 호출

4. $오류

잘 알려지지 않은 자동 변수 ' $오류 ”, 스크립트 실행 중에 발생하는 오류 메시지 또는 예외를 효과적으로 캡처합니다. '$Error'에 액세스하여 예외 메시지, 스택 추적 또는 오류 코드와 같은 특정 오류 세부 정보를 검색할 수 있으므로 자세한 분석 및 디버깅이 가능합니다.

가장 최근 오류는 배열 '의 첫 번째 오류 개체로 표시됩니다. $Error[0] '. 'Ignore' 값과 함께 ErrorAction 공통 옵션을 사용하여 오류가 '$Error' 배열에 추가되는 것을 중지할 수 있습니다.

정확한 명령을 입력했다고 가정합니다.

아이피 [ 무화과

이제 “$Error” cmdlet을 입력하면:

$ 오류

5. $PSCmdlet

PowerShell 모듈로 작업할 때 자동 변수 ' $PSCmdlet '가 시행됩니다. 이 변수는 호출되는 cmdlet 또는 함수의 현재 인스턴스에 대한 액세스를 제공하여 해당 속성 및 메서드와의 직접적인 상호 작용을 용이하게 합니다.

'$PSCmdlet'을 사용하여 고급 스크립트 개발자는 내장 기능을 확장하거나 수정하여 모듈의 동작을 미세 조정하고 향상시킬 수 있습니다. 사용 기준에 따라 cmdlet 또는 함수 코드에서 개체의 특성과 메서드를 사용할 수 있습니다.

기능 typeof-psCmdlet {
[ cmdlet바인딩 ( ) ] 매개변수 ( )
에코 '유형 ` $psCmdlet ~이다 $($psCmdlet.GetType() .전체 이름)'
}

typeof-psCmdlet

앞서 언급한 변수 외에도 PowerShell은 $HOME, $PROFILE, $PWD 등과 같은 자동 변수를 포함하며 입력 액세스, 오류 추적, 환경 정보 검색, 매개 변수 관리 등과 같은 다양한 용도로 사용됩니다. 이러한 변수는 다음과 같습니다.

자동 변수 설명
$$ PowerShell 세션에서 받은 이전 줄의 마지막 토큰을 보유합니다.
$? 마지막 명령의 실행 상태를 저장합니다.
$^ 세션에서 받은 마지막 줄의 첫 번째 토큰을 포함합니다.
$_ 파이프라인의 현재 개체를 나타냅니다.
$ConsoleFileName 세션에서 가장 최근에 사용된 콘솔 파일(.psc1)의 경로를 포함합니다.
$EnabledExperimentalFeatures 활성화된 실험적 기능 목록을 포함합니다.
$이벤트 처리 중인 이벤트를 나타내는 'PSEventArgs' 개체를 포함합니다.
$EventArgs 처리 중인 이벤트의 첫 번째 이벤트 인수를 포함합니다.
$EventSubscriber 처리 중인 이벤트의 이벤트 구독자를 나타냅니다.
$ExecutionContext PowerShell 호스트의 실행 컨텍스트를 나타냅니다.
$false 부울 값 'False'를 나타냅니다.
$foreach 'for-Each' 루프의 열거자를 포함합니다.
$HOME 사용자 홈 디렉토리의 전체 경로를 포함합니다.
$호스트 PowerShell의 현재 호스트 애플리케이션을 나타냅니다.
$입력 함수 또는 스크립트에 전달된 모든 입력에 대한 열거자 역할을 합니다.
$IsCoreCLR 세션이 .NET Core Runtime(CoreCLR)에서 실행 중인지 여부를 나타냅니다.
$IsLinux 세션이 Linux 운영 체제에서 실행 중인지 나타냅니다.
$IsMacOS 세션이 MacOS 운영 체제에서 실행 중인지 나타냅니다.
$IsWindows 세션이 Windows 운영 체제에서 실행 중인지 식별합니다.
$LASTEXITCODE 마지막 기본 프로그램 또는 PowerShell 스크립트의 종료 코드를 저장합니다.
$Matches '-match' 및 '-notmatch' 연산자에서 일치하는 문자열을 포함합니다.
$NestedPromptLevel 중첩된 명령 또는 디버깅 시나리오에서 현재 프롬프트 수준을 추적합니다.
$null null 또는 빈 값을 나타냅니다.
$PID PowerShell 세션의 PID(프로세스 식별자)를 포함합니다.
$PROFILE 현재 사용자 및 호스트 애플리케이션에 대한 PowerShell 프로필의 전체 경로를 포함합니다.
$PSBound매개변수 스크립트 또는 함수에 전달된 매개변수 및 해당 값의 사전을 보유합니다.
$PSCommandPath 실행 중인 스크립트의 전체 경로와 파일 이름을 포함합니다.
$PSCulture 현재 PowerShell 실행 공간의 문화를 반영합니다.
$PSEdition PowerShell 버전 정보를 포함합니다.
$PSHOME PowerShell 설치 디렉터리의 전체 경로를 포함합니다.
$PSItem $_와 동일하며 파이프라인의 현재 개체를 나타냅니다.
$PSScriptRoot 실행 스크립트의 상위 디렉토리의 전체 경로를 포함합니다.
$PSSenderInfo PSSession을 시작한 사용자에 대한 정보를 포함합니다.
$PSUICulture 운영 체제에 구성된 UI(사용자 인터페이스) 문화를 반영합니다.
$PWD PowerShell 세션의 현재 작업 디렉터리를 나타냅니다.
$Sender 이벤트를 생성한 개체를 포함합니다.
$ShellId 현재 쉘의 식별자를 포함합니다.
$StackTrace 가장 최근 오류에 대한 스택 추적을 저장합니다.
$스위치 'Switch' 문의 열거자를 포함합니다.
$이 클래스를 확장하는 스크립트 블록에서 클래스의 인스턴스를 참조합니다.
$true 부울 값 'True'를 나타냅니다.

PowerShell의 모든 '자동 변수'는 아래 명령을 실행하여 찾을 수 있습니다.

Get-변수

결론

자동 변수 ”는 PowerShell 스크립팅의 중추를 형성하여 개발자가 시스템, 명령줄 인수, 스크립트 실행 컨텍스트 등에 대한 정보를 얻을 수 있도록 합니다. '$PSVersionTable', '$Args', '$MyInvocation', '$Error' 등과 같은 자동 변수를 활용하여 PowerShell 스크립트 개발자는 간소화된 시스템 관리 방법을 만들 수 있습니다.