У меня есть скрипт, который просматривает список пользователей (samaccountname):
# Read usersfile to variable
$users = get-content ("users.txt")
# Get current time
$now = $(get-date -uformat "%H:%M %d/%m/%Y")
# Loop through list of users
foreach($user in $users) {
# Disable user
Disable-QADUser $user
# Set informative description
Set-QADuser $user -Description "Disabled $now"
# Delete all groupmemberships except "domain users"
Get-QADGroup -Containsmember $user | where-object { $_.name -ne 'domain users'} | Remove-QADGroupmember
# Move to "disabled users" group
move-QADObject $user -NewParentContainer 'contosoc.com/Disabled users'
# Hide from addresslist
Set-Mailbox -identity $user -HiddenFromAddressListsEnabled $true
# Moving mailbox to disabled users database
Move-Mailbox -Identity $user -TargetDatabase "myserver\mydb" -BadItemLimit 50 -Confirm:$False
}
Я бы хотел:
- Подавить вывод из разных командлетов и показать только «$ user is OK!» если все в порядке и зарегистрируйте успех в logfile.txt
- Дисплей "Ошибка!" и команда, которая потерпела неудачу, если не в порядке. И выведите полные сообщения об ошибках в отдельный файл журнала.
Я думал о том, чтобы сделать if(!cmdlettorun) { write-host "Error!" }
Но я думаю, что должен быть лучший способ.
Как мне следует правильно обрабатывать ошибки, чтобы я минимизировал отображаемый вывод, но все же позволял бы мне видеть его, если это желательно?