0

AD で GID を見つけるためのスクリプトを作成しました。これは正常に機能しています。問題は空白 (null 行) を除外することです。

 $searcher=[adsisearcher]"(objectCategory=user)"
$result = $searcher.FindAll()
$result | Select-Object @{Name="DN";Expression+{$_.properties.distinguishedname}},@{Name="gid";Expression={$_.properties.gidnumber }} |Sort-Object -Property gid 
4

2 に答える 2

3

そのコードで空白行が表示されるのは奇妙だと思います。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()

于 2015-05-06T03:44:55.150 に答える
-1

Sort オブジェクトには -unique プロパティがあり、ご想像のとおり、1 行を除いてほとんどの空白行を削除します。にパイプすることもできます

where-object -ne '`n'

または同様の何か、私がそれを詳しく説明する必要があるかどうか教えてください。

于 2013-09-18T19:08:56.057 に答える