Попробуйте, поймайте: что-то делаете, если ПОПЫТОК успешно завершен - PullRequest
1 голос
/ 28 марта 2012

Я перебираю список имен samaccount и выполняю несколько действий:

# Disabling user
try {    
    Disable-QADUser $user | Out-Null
} catch [exception] {
    "Disable-QADuser: " + $($_.Exception.Message) | out-file $logfile -append
    write-host " - Error disabling useraccount." -fore yellow
}

# Set informative description
try {    
    Set-QADuser $user -Description "Disabled $now"  | Out-Null
} catch [exception] {
    "Set-QADuser: " + $($_.Exception.Message)| out-file $logfile -append
    write-host " - Error setting informative description in AD." -fore yellow
} 

Но как мне что-то вывести, если команда выполнена успешно? Что-то вроде

write-host "User $user disabled"
"User $user disabled" | out-file $logfile -append

Вся помощь / указатели очень ценятся!

EDIT Я заметил, что я могу использовать tee-object для отправки вывода в файл, а также на консоль .. Таким образом, мне не нужно использовать строки для "вывода" вывода :)

Ответы [ 2 ]

5 голосов
/ 28 марта 2012

Вероятно, я показываю свое невежество здесь (я ничего не знаю о power-shell, извините - не голосуйте за меня!).Но если это что-то похожее на Java, вы просто поместите его под строку, которую вы пытаетесь выполнить:

try {    
    Set-QADuser $user -Description "Disabled $now"  | Out-Null
    write-host "User $user disabled"
    "User $user disabled" | out-file $logfile -append
} catch [exception] {
    "Set-QADuser: " + $($_.Exception.Message)| out-file $logfile -append
    write-host " - Error setting informative description in AD." -fore yellow
} 
1 голос
/ 28 марта 2012

Следует помнить одну важную вещь: если по какой-то причине отключение пользователя не сработало, ваш блок catch НЕ БУДЕТ вызываться, поскольку ошибка не является завершающей. Чтобы изменить тип ошибки на завершающую ошибку, используйте параметр ErrorAction:

Set-QADuser $user -Description "Disabled $now" -ErrorAction Stop | ...
...