$dec
という変数にnull値を割り当てたいのですが、エラーが発生します。ここに私のコードがあります:
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
$null
は、NULLまたは空の値を含む自動変数です。この変数を使用して、コマンドおよびスクリプトで存在しない値または未定義の値を表すことができます。Windows PowerShellは
$null
を値を持つオブジェクトとして、つまり明示的なプレースホルダーとして扱うため、$ nullを使用して一連の値の空の値を表すことができます。たとえば、
$null
がコレクションに含まれている場合、オブジェクトの1つとしてカウントされます。C:\PS> $a = ".dir", $null, ".pdf" C:\PS> $a.count 3
$null
変数をForEach-Object
コマンドレットにパイプすると、他のオブジェクトの場合と同様に、$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 }