通过Powershell从本地管理员中删除用户/组时出错

通过Powershell从本地管理员中删除用户/组时出错,powershell,Powershell,作为项目的一部分,我需要从本地administrators组的服务器数量中删除几个域用户和组。由于对许多服务器执行相同的操作会消耗大量时间,因此我想通过powershell执行相同的操作。 下面是我正在使用的代码: 首先,我尝试在一台服务器上本地完成。一旦成功,我将使用forloop一次为所有服务器运行它 $RemoteComputer = "US05APP9008.jnj.com" $Computer = [ADSI]("WinNT://$RemoteComputer,computer") $

作为项目的一部分,我需要从本地administrators组的服务器数量中删除几个域用户和组。由于对许多服务器执行相同的操作会消耗大量时间,因此我想通过powershell执行相同的操作。 下面是我正在使用的代码: 首先,我尝试在一台服务器上本地完成。一旦成功,我将使用forloop一次为所有服务器运行它

$RemoteComputer = "US05APP9008.jnj.com"
$Computer = [ADSI]("WinNT://$RemoteComputer,computer")
$Group = $Computer.PSBase.Children.Find("Administrators")
$account="domain\groupname"
$Group.Remove("WinNT://$account")   
错误 使用“1”参数调用“Remove”时出现异常:“无法添加成员” o或从本地组中删除,因为该成员不存在。 " 在C:\Users\admin\u broy5\Desktop\remtest.ps1:6 char:14
+$Group.Remove您使用的命令似乎没有任何问题,只是它们不适用,您需要添加额外的代码来解决它们。在第一个场景中,似乎您正试图从一个用户不是其成员的组中删除该用户。没关系,只要用try/catch处理异常即可

下面是使用try/catch处理错误的示例函数:

function Remove-LocalUserAccount {
     param ( [string]$userName,
             [string]$computerName = $ENV:COMPUTERNAME )



    [ADSI]$computer="WinNT://" + $computerName

    try   { $computer.delete("User",$userName) }
    catch { logmsg -msg $error -entrytype "Error"; return $false }


    return $true
}
在您的例子中,您将使用与$group.remove()相同的技术,因为这是您期望发生错误的地方:

try {
    $group.remove($accName.path);
}

catch {
   # do something, if you need to act on the error... or not
}

看起来您使用的命令没有任何问题,只是它们不适用,您需要添加额外的代码来解决它们。在第一个场景中,似乎您正试图从一个用户不是其成员的组中删除该用户。没关系,只要用try/catch处理异常即可

下面是使用try/catch处理错误的示例函数:

function Remove-LocalUserAccount {
     param ( [string]$userName,
             [string]$computerName = $ENV:COMPUTERNAME )



    [ADSI]$computer="WinNT://" + $computerName

    try   { $computer.delete("User",$userName) }
    catch { logmsg -msg $error -entrytype "Error"; return $false }


    return $true
}
在您的例子中,您将使用与$group.remove()相同的技术,因为这是您期望发生错误的地方:

try {
    $group.remove($accName.path);
}

catch {
   # do something, if you need to act on the error... or not
}