web-dev-qa-db-fra.com

Comment attribuer une valeur null à une variable dans PowerShell?

Je veux assigner une valeur null à une variable appelée $dec, mais cela me donne des erreurs. Voici mon code:

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

Ce sont des variables automatiques, comme $null, $true, $false etc.

about_Automatic_Variables, voir 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
38
dhcgn

Si le but est simplement de lister tous les objets informatiques avec un attribut de description vide, essayez ceci:

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

Utilisez $dec = $null

De la documentation :

$ null est une variable automatique contenant une valeur NULL ou vide. Vous pouvez utiliser cette variable pour représenter une valeur absente ou non définie dans les commandes et les scripts.

PowerShell considère $ null comme un objet avec une valeur, c'est-à-dire comme un espace réservé explicite. Vous pouvez donc utiliser $ null pour représenter une valeur vide dans une série de valeurs.

1
Krishna