使用Powershell将用户添加到本地Administrator组


Answers:


4

这是我用来在几台计算机上使用Powershell将用户添加到本地Administrator组的高级功能。

用法:获取内容C:\ Computers.txt | Set-LocalAdminGroupMembership-帐户“您的帐户”


Function Global:Set-LocalAdminGroupMembership
{


    <#
    .Synopsis

    .Description

    .Parameter $ComputerName,

    .Example
     PS> Set-LocalAdminGroupMembership -ComputerName $ComputerName -Account 'YourAccount'

    .Link
     about_functions
     about_functions_advanced
     about_functions_advanced_methods
     about_functions_advanced_parameters

    .Notes
     NAME:      Set-LocalAdminGroupMembership
     AUTHOR:    Innotask.com\dmiller
     LASTEDIT:  2/4/2010 2:30:05 PM
     #Requires -Version 2.0
    #>



    [CmdletBinding()]
    param(
    [Parameter(Position=0, ValueFromPipeline=$true)]
    $ComputerName = '.',
    [Parameter(Position=1, Mandatory=$true)]
    $Account
    )


    Process
    {  

        if($ComputerName -eq '.'){$ComputerName = (get-WmiObject win32_computersystem).Name}    
        $ComputerName = $ComputerName.ToUpper()


        $Domain = $env:USERDNSDOMAIN

        if($Domain){
            $adsi = [ADSI]"WinNT://$ComputerName/administrators,group"
            $adsi.add("WinNT://$Domain/$Account,group")
            }else{
            Write-Host "Not connected to a domain." -foregroundcolor "red"
            }


    }# Process


}# Set-LocalAdminGroupMembership

20

在Server 2016和Windows 10版本1607及更高版本上,您可以使用新的PowerShell本地用户cmdlet:

Add-LocalGroupMember -Group Administrators -Member username

Windows Management Framework(WMF)5.1中添加了此功能。

Microsoft.PowerShell.LocalAccounts如果您仅将文件复制到某个$env:PsModulePath位置,则该模块在2012 R2上可以正常工作。


1
请注意,根据您所在的地区,“管理员”组的名称可能会有所不同,在德语系统中为“ Administratoren”。
Panki

16

这是一个执行此功能的简单的2行脚本

$group = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/administrators,group")
$group.add("WinNT://$env:USERDOMAIN/usernameiwantoadd,user")

有关更多信息,请参见嗨,脚本专家!如何使用Windows PowerShell将域用户添加到本地组?

因此,有一些注意事项。在第一行中,我使用了字符串连接,而我不必(参见下一行),但是我喜欢这样做,因为它有助于加重我正在使用的变量。其次,这些行将添加一个域用户,如果要添加本地用户,只需删除$env:USERDOMAIN/


我想以在工作站上运行该脚本的人可以键入用户名的方式运行此脚本。因此,阅读主持人
Rihan Meij 2010年

1
因此,在这种情况下,请使第一行$ userInput = Read-Host“输入要添加到本地管理组的用户名”,然后使用$ userinput,其中说usernameiwantoadd
Jim B

0

这是执行此操作的另一种方法。这需要在管理员上下文中运行:

$ domain =“”
$ computername =“ $ env:计算机名”
$ group = $ computer.psbase.children.find(“管理员”)

函数AddToGroup($ number)
{
     $ group.add(“ WinNT://” + $ domain +“ /” + $ number)
}

#将这些域用户/组添加到本地管理员组
 AddToGroup“”
 AddToGroup“”

#将这些域计算机帐户添加到本地管理员组。 
#计算机帐户始终以$结尾。
AddToGroup“ $”

在我的网站上有更多信息。


0

添加目标安全组中已经存在的帐户会出现错误,因此您需要检查是否已添加帐户,但是我的要求是向下兼容PowerShell v2.0

以下是用于将用户添加到在2016年之前的Windows Server的旧版PowerShell上运行的本地管理员组中的代码段。该代码示例将用于自定义IIS AppPool身份的服务帐户添加到本地Administrators组。

$appPoolIdentity = "DOMAIN\svc-acc-name"
# check if user is already member of the local administrators group - using case insensitive string comparison
if(((invoke-command {net localgroup administrators}) -match ($appPoolIdentity -replace '\\','\\')).Count -eq 0){
    Write-Host "The app pool identity user '$appPoolIdentity' is not found in the local 'Administrators' group."
    # add user to the local administrators group
    $adminGroup = [ADSI]("WinNT://$env:COMPUTERNAME/administrators,group")
    $adminGroup.Add("WinNT://$appPoolIdentity,user")
    Write-Warning "Added '$appPoolIdentity' to the local 'Administrators' group."
}else{
    Write-Host "The app pool identity user '$appPoolIdentity' is already member of local 'Administrators' group."
}

net localgroup administrators上面的if语句中使用的功劳归于此博客文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.