そのコードで空白行が表示されるのは奇妙だと思います。distinguishedname
ユーザーの が null であるシナリオは考えられません。私が目にするあなたのコードの問題の 1 つは、最初の計算式のタイプミスである可能性があります。
@{Name="DN";Expression+{$_.properties.distinguishedname}}
代わりに
@{Name="DN";Expression={$_.properties.distinguishedname}}
ただし、実行前に簡単にキャッチできる構文エラーが発生するはずです。
ブランクのフィルタリング
これに対処する非常に簡単な PowerShell の方法は、単純なWhere-Object
句を使用することです。議論のために、GID
が空/nullである可能性があるとしましょう。
$result | Select-Object @{Name="DN";Expression={$_.properties.distinguishedname}},@{Name="gid";Expression={$_.properties.gidnumber }} | Where-Object{$_.GID} | Sort-Object -Property gid
null または空の値は、PowerShell で False と評価されます。Where-Object{$_.GID}
は、入力されたプロパティを持つオブジェクトのみGID
を出力として渡すことを許可します。文字列の静的メソッドからも同様の結果が得られます。これらは、コードの可読性も高めます。
... | Where-Object{[string]::IsNullOrWhiteSpace($_.GID)} | ...
もあります[string]::IsNullOrEmpty()