我想为名为$dec
的变量分配一个空值,但它给了我错误。这是我的代码:
import-module activedirectory
$domain = "domain.example.com"
$dec = null
Get-ADComputer -Filter {Description -eq $dec}
答案 0 :(得分:45)
这些是自动变量,例如$null
,$true
,$false
等。
about_Automatic_Variables
,请参阅https://technet.microsoft.com/en-us/library/hh847768.aspx?f=255&MSPPError=-2147217396
<强> $ NULL 强>
$null
是一个包含 NULL 或空的自动变量 值。您可以使用此变量来表示缺席或未定义 命令和脚本中的值。Windows PowerShell将
$null
视为具有值的对象,即as 显式占位符,因此您可以使用$ null来表示空值 一系列价值观。例如,当集合中包含
$null
时,它将被计为 其中一个对象。C:\PS> $a = ".dir", $null, ".pdf" C:\PS> $a.count 3
如果将
$null
变量传递给ForEach-Object
cmdlet,则将其传递给它 为$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
答案 1 :(得分:3)
如果目标只是列出所有具有空描述属性的计算机对象,请尝试使用
import-module activedirectory
$domain = "domain.example.com"
Get-ADComputer -Filter '*' -Properties Description | where { $_.Description -eq $null }
答案 2 :(得分:3)
使用$dec = $null
$ null是一个包含NULL或空值的自动变量。您可以使用此变量来表示命令和脚本中缺少或未定义的值。
PowerShell将$ null视为具有值的对象,即作为显式占位符,因此您可以使用$ null表示一系列值中的空值。