Я пытаюсь очистить группу локальных администраторов на некоторых машинах и нуждаюсь в решении в Powershell. Пока мне удалось получить список участников, но у меня возникли проблемы с моим синтаксисом, чтобы найти группу, которую я хочу удалить. Группа на каждой машине, которая нуждается в удалении, будет отличаться, но имеет тот же формат имени.Удалить группу домена для локальных администраторов с использованием wild card
я мог бы использовать это, если имя группы было то же самое:
$objGroup = [ADSI]("WinNT://$Env:COMPUTERNAME/Administrators")
$objGroupMembers = $objGroup.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty',$null, $_, $null)}
$objRemoveGroup = [ADSI]("WinNT://Contoso/ABC-MyAdmins")
$objGroup.PSBase.Invoke("Remove",$objRemoveGroup.PSBase.Path)
Но группы, мне нужно, чтобы удалить удалим можно назвать XYZ-MyAdmins или ABC-XYZ-MyAdmins. В основном я просто хочу удалить любого члена группы локальных администраторов, который похож на * -MyAdmins.
Так что, если я что-то вроде этого, он не работает:
$objGroup = [ADSI]("WinNT://$Env:COMPUTERNAME/Administrators")
$objGroupMembers = $objGroup.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty',$null, $_, $null)}
$ObjRemove = ForEach($Member in ($objGroupMembers | Where-Object {$Member -like '*-MyAdmins'}))
{
$objRemoveGroup = [ADSI]("WinNT://Contoso/$($ObjRemove)")
$objGroup.PSBase.Invoke("Remove",$objRemoveGroup.PSBase.Path)
}
Что я здесь делаю неправильно?