Mam kawałek kodu, który wygląda tak:Sprawdzanie istnienia obiektu AD; jak mogę uniknąć brzydkiego komunikatu o błędzie?
if (Get-ADUser $DN -EA SilentlyContinue) {
# Exists
} else {
# Doesn't Exist
}
Niestety, kiedy Get-ADUser DN nie znaleźć użytkownika (co jest w porządku, oznacza to, że nazwa obiektu nie jest brany), rzuca do góry i wypluwa błąd. Wiem, że to się nie uda, to dobrze, dlatego mam -ErrorAction
do SilentlyContinue
. Niestety wydaje się, że nic nie robi ... Nadal dostaję barfa na wyjściu skryptu. Kod działa, jest po prostu brzydki, ponieważ konsola wypluwa błąd.
- Czy istnieje lepszy sposób sprawdzenia, czy dany obiekt istnieje?
- Jeśli nie, czy istnieje sposób, aby funkcja ErrorAction prawidłowo działała?
Uwaga: z rozwiązaniem try ... catch możesz być bardziej konkretny; tj. poprzez wychwycenie określonych wyjątków. 'try {Get-ADUser $ DN -EA Stop} catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {" nice try "} catch {" nie spodziewany problem "}' – JohnLBevan
Wygląda na to, że 'get-aduser -erroraction 'silentlycontinue'' działać poprawnie w powershell-v4.0. –