Windows 为什么可以';是否使用此PowerShell脚本查找本地用户或组?

Windows 为什么可以';是否使用此PowerShell脚本查找本地用户或组?,windows,security,powershell,scripting,Windows,Security,Powershell,Scripting,我从网上下载了这个脚本,它声称能够将整个用户组转变为本地管理员,这似乎完全符合我的目标(将所有标准用户转变为本地管理员)。但是,它给出了以下错误 使用“1”参数调用“Add”时出现异常:“无法将成员添加到本地组或从本地组中删除,因为该成员不存在。” 我遵循了网站上给出的示例,尝试使用“用户”组作为参数,并分别针对我按名称创建的标准用户配置文件“Test01”。在这两种情况下,总是抛出相同的错误。我在系统控制台的“组”管理单元下进行了检查,帐户和组的拼写肯定都正确。以下是为方便起见编写的脚本,以及

我从网上下载了这个脚本,它声称能够将整个用户组转变为本地管理员,这似乎完全符合我的目标(将所有标准用户转变为本地管理员)。但是,它给出了以下错误

使用“1”参数调用“Add”时出现异常:“无法将成员添加到本地组或从本地组中删除,因为该成员不存在。”

我遵循了网站上给出的示例,尝试使用“用户”组作为参数,并分别针对我按名称创建的标准用户配置文件“Test01”。在这两种情况下,总是抛出相同的错误。我在系统控制台的“组”管理单元下进行了检查,帐户和组的拼写肯定都正确。以下是为方便起见编写的脚本,以及我尝试在顶部执行它的两种不同方式。我省略了计算机名,因为如果未指定,脚本将成功找到它

PS C:\> Set-LocalAdminGroupMembers.ps1 -ObjectType User -ObjectName "WORKGROUP\Test01"

PS C:\> Set-LocalAdminGroupMembers.ps1 -ObjectType Group -ObjectName "WORKGROUP\Users"

[CmdletBinding()]
    Param(
    [Parameter(Mandatory=$true,Position=1)]
    [ValidateSet("User","Group")]
    [String]
    $ObjectType,
    [Parameter(Mandatory=$true,Position=2)]
    [ValidateScript({($_.split("\").count -eq 2)})]
    [string]$ObjectName,
    [Parameter(Position=3)]
    [String[]]$ComputerName=$env:COMPUTERNAME
    )

$ResultsFile = "c:\temp\ResultsofLocalGroupAddition.csv"
$ObjDomain = $ObjectName.Split("\")[0]
$ObjName = $ObjectName.Split("\")[1]
$ComputerCount = $ComputerName.Count
$count = 0
Add-Content -Path $ResultsFile -Value "ComputerName,Status,Comments"
foreach($Computer in $ComputerName) {
    $count++
    $Status=$null
    $Comment = $null
    Write-Host ("{0}. Working on {1}" -f $Count, $Computer)
    if(Test-Connection -ComputerName $Computer -Count 1 -Quiet) {
        Write-Verbose "$Computer : Online"
        try {
            $GroupObj = [ADSI]"WinNT://$Computer/Administrators"
            $GroupObj.Add("WinNT://$ObjDomain/$ObjName")
            $Status = "Success"
            $Comment = "Added $ObjectName $ObjectType to Local administrators group"
            Write-Verbose "Successfully added $ObjectName $ObjectType to $Computer"
        } catch {
            $Status = "Failed"
            $Comment = $_.toString().replace("`n","").replace("`r","")
            Write-Verbose "Failed to add $ObjectName $ObjectType to $Computer"
        }

        Add-Content -Path $ResultsFile -Value ("{0},{1},{2}" -f $Computer,$Status,$Comment )    

    } else {
        Write-Warning "$Computer : Offline"
        Add-Content -Path $ResultsFile -Value ("{0},{1}" -f $Computer,"Offline")
    }

}

如果试图将本地用户帐户添加到本地管理员组,则需要正确指定该帐户。该帐户将不是
WinNT://$ObjDomain/$ObjName
,而是
WinNT://$Computer/$ObjName
@TheMadTechnician谢谢!这解决了一半的问题。然而,我主要关心的是能够使用这个脚本的组实现。通过您的修复,我可以一次成功地选择一个帐户,但当我尝试按组而不是按用户名添加时,仍然会遇到相同的错误。这很重要,因为我希望能够跨多台机器重新部署此脚本。有什么想法吗?你想从本地组中提取用户,并将每个用户添加到本地管理组,还是只想将本地组添加到本地管理组?@TheMadTechnician真正的最终目标是将非本地管理员的任何用户(除了默认的“来宾”和“管理员”)添加到本地管理组。另外,不应篡改当前存在的两个网络管理员帐户。昨天下午晚些时候,我和一位同事聊天,他告诉我,我可以用几个简单的DOS命令来实现这一点。。。这就是我现在要找的。