Удаление пользователя из определенной группы в определенном подразделении
Привет ребята у меня есть это
function Invoke-AdDesktopGGroup {
[CmdletBinding(SupportsShouldProcess)]
param($ADGroup)
#$OUPath = "OU=SCPA,DC=souche,DC=ban"
$user = Get-ADUser -SearchBase "OU=SCPA,DC=soucy,DC=lan" -Filter * -Properties MemberOf
$user | foreach {
if ($PSCmdlet.ShouldProcess($_.Name, 'Remove Group')) {
$_ | Remove-ADGroupMember -Members $_ -Confirm $false
}
}
}
И я стремлюсь удалить каждого пользователя в подразделении SCPA, у которого есть группа с именем Desktop Global. Я пишу для этого следующую команду: Invoke-AdDesktopGGroup -ADGroup 'Desktop Global' -Whatif
Ребята, вы можете мне помочь, я вроде как застрял.
2 ответа
Итак, что-то вроде этого?
function Invoke-AdDesktopGroup {
[CmdletBinding(SupportsShouldProcess)]
Param(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[string[]]$ADGroup
)
Begin {
$ADGroup_Splat = @{
SearchBase = 'OU=SCPA,DC=soucy,DC=lan'
Filter = '*'
Properties = 'MemberOf'
}
$ADUsers = Get-ADUser @ADGroup_Splat
}
Process{
# Remove-ADGroupMember -Identity $ADGroup -Members $ADUsers -Confirm:$false # I believe this is all you would need instead of a foreach loop
foreach ($User in $ADUsers) {
if ($PSCmdlet.ShouldProcess($User.Name, 'Remove Group')) {
Remove-ADGroupMember -Identity $ADGroup -Members $User.Name -Confirm:$false
}
}
}
}
У меня нет пользователя, на котором я могу это протестировать, но он должен работать. Обратите внимание на встроенный комментарий; Я считаю, что это может занять множество пользователей, посмотрев синтаксис для
Remove-ADGroupMember
.
Спасибо за вашу помощь, мне удалось заставить его работать вот так
function Invoke-AdDesktopGroup {
[CmdletBinding(SupportsShouldProcess)]
Param($ADGroup)
Begin {
$ADGroup_Splat = @{
SearchBase = 'OU=SCPA,DC=soucy,DC=lan'
Filter = '*'
Properties = 'MemberOf'
}
$ADUsers = Get-ADGroupMember -Identity $ADGroup
}
Process{
foreach ($User in $ADUsers) {
if ($PSCmdlet.ShouldProcess($User.Name, 'Remove Group')) {
Remove-ADGroupMember -Identity $ADGroup -Members $User.Name -Confirm:$false
}
}
}
}
Похоже, что параметр, который вы мне дали, не сработал. Powershell не удалось преобразовать строковый параметр в параметр Active Directory. Но тем не менее я смог заставить его работать благодаря вашему вкладу. Большое спасибо!