Я считаю, что это работает лучше всего:
$Group = Get-ADGroup -Filter {SamAccountName -eq $GroupName}
Если фильтр не возвращает результатов, то для $ Group просто устанавливается значение $ null и сообщение об ошибке не генерируется.Кроме того, поскольку имя учетной записи SAM должно быть уникальным в Active Directory, нет риска, что для $ Group будет задан массив из более чем одного объекта.
Я считаю, что использование -Filter для получения группы, а неИдентичность работает очень хорошо при проверке существования групп (или пользователей) в операторах If.Например:
If (Get-ADGroup -Filter {SamAccountName -eq $GroupName})
{
Add-ADGroupMember -Identity $GroupName -Members $ListOfUserSamAccountNames
}
Else
{
Write-Warning "Users could not be added to $GroupName because $GroupName
does not exist in Active Directory."
}
Я считаю, что логически гораздо проще иметь дело (если группа существует, добавьте пользователей; если нет, отобразите сообщение), чем предложение mjolinor попробовать / поймать с помощьюКомандлет Get-ADGroup с параметром -Identity.Рассмотрим метод try / catch, описанный выше, используя параметр -Identity:
Try
{
Get-ADGroup -Identity $GroupName
Add-ADGroupMember -Identity $GroupName -Members $ListOfUserSamAccountNames
}
Catch
{
Write-Warning "Users could not be added to $GroupName because $GroupName
does not exist in Active Directory."
}
Вы видите, если любая команд в блоке try выдает ошибку завершения.Если это так, это означает, что группа не существует и будет двигаться дальше и обрабатывать команду (и) в блоке catch.Это будет работать, но я не думаю, что попытка / ловить здесь также идет логически, по сравнению с if / else.
Не поймите меня неправильно, mjolinor - гений PowerShell.Просто в этом случае я не думаю, что его решение является лучшим.