2016-04-25 21 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のようなLocal Administratorsグループのメンバを削除したいだけです。

だから私はこのような何かをすれば、それは動作しません:私はここで間違って何をやっている

$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)} 
     } 
関連する問題