一部のマシンでローカル管理者グループをクリーンアップしようとしていますが、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)
}
?