programing

PowerShell의 변수에 null 값을 할당하려면 어떻게 해야 합니까?

mailnote 2023. 11. 7. 21:02
반응형

PowerShell의 변수에 null 값을 할당하려면 어떻게 해야 합니까?

null 값을 다음과 같은 변수에 할당합니다.$dec, 하지만 그것은 나에게 오류를 줍니다.여기 내 코드가 있습니다.

import-module activedirectory
$domain = "domain.example.com"
$dec = null
Get-ADComputer -Filter {Description -eq $dec}

이 변수들은 자동 변수들입니다, 예를 들어,$null,$true,$false기타.

about_Automatic_Variables, https://technet.microsoft.com/en-us/library/hh847768.aspx?f=255&MSPPError=-2147217396 를 참조하십시오.

$NULL
$nullNULL 또는 빈 값을 포함하는 자동 변수입니다.이 변수를 사용하여 명령 및 스크립트에서 부재하거나 정의되지 않은 값을 나타낼 수 있습니다.

Windows PowerShell 트리트$null값을 가진 개체로서, 즉 명시적 자리 표시자로서, $ null를 사용하여 일련의 값에서 빈 값을 나타낼 수 있습니다.

예를 들어, 언제$null컬렉션에 포함되며 개체 중 하나로 계산됩니다.

C:\PS> $a = ".dir", $null, ".pdf"
C:\PS> $a.count
3

당신이 피리를 피우면.$null에 가변적인ForEach-Objectcmdlet, 다음에 대한 값이 생성합니다.$null, 다른 대상들이 그러하듯이 말입니다

PS C:\ps-test> ".dir", $null, ".pdf" | Foreach {"Hello"}
Hello
Hello
Hello

결과적으로 사용할 수 없습니다.$null"파라미터 값 없음"을 의미합니다.매개변수 값:$null는 기본 매개 변수 값을 재정의합니다.

그러나 Windows PowerShell은 다음과 같이 처리합니다.$null자리 표시자로서 변수를 사용하면 다음과 같은 스크립트를 사용할 수 있습니다. 이 스크립트는 다음과 같이 작동하지 않습니다.$null무시당했습니다.

$calendar = @($null, $null, “Meeting”, $null, $null, “Team Lunch”, $null)
$days = Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
$currentDay = 0

foreach($day in $calendar)
{
    if($day –ne $null)
    {
        "Appointment on $($days[$currentDay]): $day"
    }

    $currentDay++
}

출력:

Appointment on Tuesday: Meeting
Appointment on Friday: Team lunch

사용하다$dec = $null

설명서에서:

$null은 NULL 또는 빈 값을 포함하는 자동 변수입니다.이 변수를 사용하여 명령 및 스크립트에서 부재하거나 정의되지 않은 값을 나타낼 수 있습니다.

PowerShell은 $null을 값이 있는 개체, 즉 명시적 자리 표시자로 처리하므로 $null을 사용하여 일련의 값에서 빈 값을 나타낼 수 있습니다.

단순히 설명 속성이 비어있는 모든 컴퓨터 개체를 나열하는 것이 목표라면 이렇게 해보십시오.

import-module activedirectory  
$domain = "domain.example.com" 
Get-ADComputer -Filter '*' -Properties Description | where { $_.Description -eq $null }

다른 사람들이 말했듯이, 사용.$null.

하지만, 다음의 처리.$null그렇게 간단하지 않습니다.

목록(또는 더 정확하게는,System.Array객체)$null목록을 인덱싱할자리 표시 개체로 처리되므로($null, $null).count산출물들2.
하지만 그렇지 않으면$null에 의해 보고된 바와 같이, 내용이 없음(객체가 없음)을 나타내는 플래그로 취급됩니다. 또는 보다 정확하게는 "null 값의 표현식"으로 보고됩니다..GetType()), 그래서($null).count산출물들0.
따라서

$null.count;  # Output = 0
($null).count;  # Output = 0
(, $null).count;  # Output = 1
($null, $null).count;  # Output = 2
($null, $null, $null).count;  # Output = 3

참고: 동일한 출력이 에서 반환됩니다..count그리고..length위와 같은 맥락에서

마찬가지로 위의 내용 중 하나를 변수에 명시적으로 할당하는 경우, 에 해당합니다.

$aaa = $null;  $aaa.count
$bbb = ($null, $null);  $bbb.count

각각의 출력은0그리고.2.

마찬가지로, 로핑(looping.ForEach, 와 같이

$aaa = $null;  ForEach ($a in $aaa) {write-host "Foo" -NoNewLine}
$bbb = ($null, $null);  ForEach ($b in $bbb) {write-host "Bar" -NoNewLine}

각각의 출력, 아무것도, 그리고BarBar.

그러나 목록에서 반환된 개별 항목에서 작동할 때 주의하십시오. $null를 실행하면 확인할 수 있듯이, 다시 "null 값 식"으로 처리됩니다.

$xxx = ($null, "foo", $null);  ForEach ($x in $xxx) {write-host "C=" $x.count "| " -NoNewLine}

어떤 결과물이C= 0 | C= 1 | C= 0 | .

언급URL : https://stackoverflow.com/questions/28697349/how-do-i-assign-a-null-value-to-a-variable-in-powershell

반응형