PowerShell의 널 변수

Marion Paul Kenneth Mendoza 2023년9월18일
  1. PowerShell의 Null 변수 소개
  2. PowerShell에서 Null 변수의 영향
  3. PowerShell에서 Null 값 확인
PowerShell의 널 변수

PowerShell은 $Null 개체를 null 값으로 처리하고 일부 명령은 생성하려면 일부 출력이 필요합니다. 오류가 있는 경우 null 값을 생성하고 스크립트의 문제 해결 목적에서 명령이 값을 생성하는지 확인하는 데 도움이 될 수도 있습니다.

이 문서에서는 null 변수, PowerShell의 다른 구문에서 null 변수를 사용할 때의 영향, null 값을 확인하는 방법에 대해 설명합니다.

PowerShell의 Null 변수 소개

NULL은 알 수 없거나 비어 있는 값으로 생각할 수 있습니다. 예를 들어, 변수는 값이나 개체를 할당할 때까지 NULL입니다.

이 변수는 일부 명령에 값이 필요하고 값이 NULL인 경우 오류를 생성하기 때문에 중요할 수 있습니다.

$null 변수는 NULL을 나타내는 데 사용되는 PowerShell의 자동 변수입니다. 변수에 할당하고 비교에 사용하고 컬렉션에서 NULL에 대한 자리 표시자로 사용할 수 있습니다.

PowerShell은 $null을 NULL 값을 가진 개체로 취급합니다. 따라서 이 변수는 다른 언어에서 온 경우 예상할 수 있는 것과 다릅니다.

PowerShell에서 Null 변수의 영향

$null 값은 나타나는 위치에 따라 코드에 다르게 영향을 줍니다.

문자열에 미치는 영향

문자열에 $null을 사용하면 빈 값(또는 빈 문자열)이 됩니다.

$value = $null
Write-Output "The value is $value."

출력:

The value is .

이 변수는 로그 메시지에서 변수를 사용할 때 변수를 괄호로 묶어야 하는 이유 중 하나입니다. 값이 문자열 끝에 있을 때 변수 값의 가장자리를 식별하는 것이 훨씬 더 중요합니다.

$value = $null
Write-Output "The value is [$value]"

출력:

The value is []

이 변수를 사용하면 빈 문자열과 $null 값을 쉽게 찾을 수 있습니다.

수치 방정식에 미치는 영향

$null 변수가 숫자 방정식에 사용될 때 오류가 발생하지 않으면 결과가 유효하지 않습니다. 때로는 $null 변수가 0으로 평가되고 다른 경우에는 전체 결과가 $null이 됩니다.

다음은 값의 순서에 따라 0 또는 $null을 제공하는 곱셈과 관련된 예입니다.

$null * 5
$null -eq ( $null * 5 )

출력:

True

컬렉션에 미치는 영향

컬렉션을 사용하면 인덱스를 사용하여 값에 액세스할 수 있습니다. null 컬렉션을 인덱싱하려고 하면 Cannot index into the null array라는 오류가 발생합니다.

$value = $null
$value[10]

출력:

Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

컬렉션이 있지만 컬렉션에 없는 요소에 액세스하려고 하면 $null 결과가 표시됩니다.

$array = @( 'one', 'two', 'three' )
$null -eq $array[100]

출력:

True

물체에 미치는 영향

속성이 지정되지 않은 개체의 속성이나 하위 속성에 액세스하려고 하면 정의되지 않은 변수와 마찬가지로 $null 변수를 얻을 수 있습니다. 이 경우 값이 $null인지 실제 개체인지는 중요하지 않습니다.

$null -eq $undefined.not.existing

출력:

True

방법에 대한 영향

$null 변수에서 메소드를 호출하면 RuntimeException 예외가 발생합니다.

$value = $null
$value.toString()

출력:

You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

널 값 표현식에서 메소드를 호출할 수 없습니다라는 문구를 볼 때마다 먼저 $null 값을 확인하지 않고 변수에 대한 메소드를 호출할 위치를 찾을 수 있습니다.

PowerShell에서 Null 값 확인

예제에서 $null 값을 확인할 때 항상 $null 변수를 왼쪽에 배치합니다.

이 스타일의 작성은 의도적이며 PowerShell 모범 사례로 받아들여집니다. 그러나 오른쪽에 배치해도 예상한 결과를 얻지 못하는 몇 가지 시나리오가 있습니다.

다음 예를 보고 결과가 어떻게 될지 예측해 보겠습니다.

if ( $value -eq $null ){
    'The array is $null'
}

if ( $value -ne $null ){
    'The array is not $null'
}

$value를 정의하지 않으면 첫 번째 항목은 $true로 평가되고 메시지는 The array is $null이 됩니다. 여기서 주의할 점은 두 결과가 모두 $false가 되도록 허용하는 $value를 생성할 수 있다는 것입니다.

출력:

$value = @( $null )

이 경우 $value 변수는 $null을 포함하는 배열입니다.

-eq 연산자는 배열의 모든 값을 확인하고 일치하는 $null을 반환합니다(이는 $false로 평가됨). -ne 연산자는 $null 값과 일치하지 않는 모든 항목을 반환하며 이 경우 결과가 없습니다(이것도 $false로 평가됨).

따라서 둘 중 하나가 되어야 하는 경우에도 둘 다 $true가 되지 않습니다.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Variable