14

次のようなコードが少しあります。

if (Get-ADUser $DN -EA SilentlyContinue) {
  # Exists
} else {
  # Doesn't Exist
}

残念ながら、DN で Get-ADUser がユーザーを見つけられない場合 (これは問題ありません。オブジェクト名が取得されていないことを意味します)、エラーが発生して吐き出されます。私はそれが失敗することを知っています、それは結構です、それが私が-ErrorActiontoを持っている理由SilentlyContinueです。残念ながら、何もしないようです...スクリプト出力でまだbarfが表示されます。コードは機能しますが、コンソールがエラーを吐き出すため、見苦しいだけです。

  • 特定のオブジェクトが存在するかどうかをテストするためのより良い方法はありますか?
  • そうでない場合、ErrorAction を適切にサイレントにする方法はありますか?
4

6 に答える 6

21

エラーを吐き出さずに動作することがわかった唯一の方法は、フィルターパラメーターを使用することです。

if (Get-ADUser -Filter {distinguishedName -eq $DN} ) {
  # Exists
} else {
  # Doesn't Exist
}
于 2012-07-23T07:04:42.027 に答える
10

これは例外です。次のようにキャッチしてみてください。

$user = $(try {Get-ADUser $DN} catch {$null})
if ($user -ne $null) {
  # Exists
} else {
  # Doesn't Exist
}
于 2012-07-23T03:46:09.147 に答える
3

このコマンドは終了エラーを出しているようです。を使用しtry { ... } catch { ... }てエラーを処理/抑制します。

于 2012-07-23T03:42:46.310 に答える
0

私はこれを次のようにします:

Get-ADUser | ?{$_.id -eq $DN.id}

Id またはその他の一意の識別子。

これにより、ユーザーまたは null が返され、例外がラップされます。

于 2012-07-23T06:55:03.157 に答える