Вы можете сделать следующее:
$notmems = Get-ADGroupMember -Identity <groupname> |
Get-ADUser -Property extensionAttribute6 | Where extensionAttribute6 -like 'N*'
Remove-ADGroupMember -Identity <groupname> -Members $notmems -WhatIf
Вам придется удалить переключатель -WhatIf
, если вы удовлетворены предполагаемой операцией команды.
Объяснение:
Get-ADGroupMember
возвращает ADPrincipal
объектов с ограниченным набором свойств (distinguishedName
, name
, objectClass
, objectGUID
, SamAccountName
, SID
). Чтобы увидеть больше свойств, которые обычно ассоциируются с объектом ADUser
, вы можете вызвать Get-ADUser
.
Передача ADPrincipal
, который является пользователем, в Get-ADUser -Property extensionAttribute6
возвращает объект ADUser
со свойством по умолчанию, установленным плюс extensionAttribute6
. Вы можете вернуть подмножество этих свойств с помощью Select-Object -Property Property1,Property2
.
, поскольку Remove-ADGroupMember
использует параметр -Identity
для поиска группы и принимает набор ADPrincipal
s для параметра -Members
, нет l oop необходимо для удаления нескольких пользователей из одной группы.
Кроме того, $notmems = @()
и $notmems +=
здесь не нужны. Если ваша команда возвращает несколько объектов, $notmems
автоматически будет коллекцией или массивом с простым присваиванием $notmems =
. Если вам всегда требуется коллекция, даже если один объект может быть возвращен, вы можете просто окружить команду @()
.
Если в вашей группе могут быть вложенные группы, вам может потребоваться обновить команду Get-ADGroupMember
не выбрасывать ошибки при передаче в Get-ADUser
:
Get-ADGroupMember -Identity <groupname> | Where objectClass -eq 'user' |
Get-ADUser -Property extensionAttribute6 | Where extensionAttribute6 -like 'N*'