2016-04-25 32 views
1

我想清理一些機器上的本地管理員組,並且需要Powershell中的解決方案。到目前爲止,我已經設法檢索成員列表,但是我的語法有問題,無法找到想要刪除的組。需要刪除的每臺機器上的組將會不同,但具有相同的名稱格式。使用通配符刪除本地管理員的域組

我可以用這個,如果組的名稱是相同的:

$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) 
} 

我在做什麼錯在這裏?

回答

0

我想我只是需要發佈一個問題,以便自己解決這個問題。我仍然想知道什麼是我的原始代碼破壞,所以如果有人有時間看看,我會很感激。我仍然在學習PowerShell的細節。

這是工作需要:

$objGroup = [ADSI]("WinNT://$Env:COMPUTERNAME/Administrators") 
$objGroupMembers = $objGroup.psbase.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty',$null, $_, $null)} 
     ForEach($Member in $objGroupMembers) 
     { 
      If($Member -like "*-MyAdmins") 
      {$objRemoveGroup = [ADSI]("WinNT://Contoso/$($Member)") 
      $objGroup.PSBase.Invoke("Remove",$objRemoveGroup.PSBase.Path)} 
     } 
相關問題