如何从列表中的计算机中删除本地管理员

时间:2014-05-09 14:51:42

标签: powershell vbscript

每周我都会收到一台计算机列表和一台与每台计算机关联的用户名。我需要从关联计算机上的Administrators组中删除每个特定用户。

有没有办法编写脚本?

2 个答案:

答案 0 :(得分:2)

正如我在评论中所说的那样,Austin French的答案应该可以正常运行,但它可能有点慢,因为它依赖于一个外部应用程序(PSExec)来建立与远程计算机的连接,执行操作,然后向PowerShell报告。还期待一些令人讨厌的错误,因为PSExec与PowerShell并不完全相同。

作为替代方案,我建议使用ADSI类型适配器[ADSI]通过.Net功能执行操作。

$List = Import-CSV File.CSV 
ForEach($Item in $List){
    $objUser = [ADSI]("WinNT://domain/$($Item.UserName)")
    $objGroup = [ADSI]("WinNT://$($Item.ComputerName)/Administrators")
    $objGroup.PSBase.Invoke("Remove",$objUser.PSBase.Path)
}

这应该工作得很好。显然,您需要将域名放在域名所在的位置,或者如果要删除的用户是本地用户帐户,则需要将其更改为$($ Item.computername)。我相当肯定,这比PSExec工作得快得多,而且不依赖于外部应用程序。

答案 1 :(得分:1)

我无法对此进行全面测试,但您应该能够做到这一点:

导入列表:

Import-Csv "File.csv" | Foreach-Object {    
 $User= $_.Username    
 $PC = $_.ComputerName

 psexec "$PC" net user "$User" /delete 
}

这假设您有名为Username和ComputerName的标题列。