Как назначить нулевое значение переменной в powershell?

Я хочу присвоить значение null переменной $dec, но это дает мне ошибки, вот мой код:

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

Ответы

Ответ 1

Это автоматические переменные, такие как $null, $true, $false и т.д.

about_Automatic_Variables, см. https://technet.microsoft.com/en-us/library/hh847768.aspx?f=255&MSPPError=-2147217396

$NULL
   $null is an automatic variable that contains a NULL or empty value. You
   can use this variable to represent an absent or undefined value in commands
   and scripts.

   Windows PowerShell treats $null as an object with a value, that is, as an
   explicit placeholder, so you can use $null to represent an empty value in a
   series of values.  

   For example, when $null is included in a collection, it is counted as one of
   the objects.

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

   If you pipe the $null variable to the ForEach-Object cmdlet, it generates a
   value for $null, just as it does for the other objects.

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

   As a result, you cannot use $null to mean "no parameter value." A parameter
   value of $null overrides the default parameter value.

   However, because Windows PowerShell treats the $null variable as a placeholder,
   you can use it scripts like the following one, which would not work if $null
   were ignored.

       $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

Ответ 2

Если цель просто состоит в том, чтобы перечислить все объекты компьютера с пустым атрибутом описания, попробуйте это

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