Hinzufügen eines Benutzers zur lokalen Administratorgruppe mithilfe von Powershell


15

Ich möchte PowerShell verwenden, um der lokalen Administratorgruppe auf einem Computer einen bestimmten Benutzer hinzuzufügen. Ich würde das PowerShell-Skript im Kontext eines Benutzers ausführen, der über Administratorrechte auf dem lokalen Computer verfügt.


Siehe auch [Windows Local Account and Group Maintenance] [1]. [1]: serverfault.com/questions/31058/…
Nathan Hartley,

Antworten:


4

Dies ist die erweiterte Funktion, mit der ich Benutzer mit Powershell auf mehreren Computern zur lokalen Administratorgruppe hinzufüge.

Verwendung: Get-Content C: \ Computers.txt | Set-LocalAdminGroupMembership -Account 'YourAccount'


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

19

Auf Server 2016 und Windows 10, Version 1607 und höher, können Sie die neuen lokalen PowerShell-Benutzer-Cmdlets verwenden:

Add-LocalGroupMember -Group Administrators -Member username

Dies wurde in Windows Management Framework (WMF) 5.1 hinzugefügt.

Das Microsoft.PowerShell.LocalAccountsModul funktioniert in 2012 R2 einwandfrei, wenn Sie die Dateien nur an einen $env:PsModulePathSpeicherort kopieren .


1
Seien Sie vorsichtig, die Gruppe "Administratoren" kann je nach Gebietsschema unterschiedlich heißen, auf einem deutschen System heißt sie "Administratoren".
Panki

16

Hier ist ein einfaches zweizeiliges Skript, das diese Funktion ausführt

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

Weitere Informationen finden Sie unter Hey, Scripting Guy! Wie kann ich mit Windows PowerShell einen Domänenbenutzer zu einer lokalen Gruppe hinzufügen?

Es gibt also ein paar Notizen. In der ersten Zeile habe ich die Verkettung von Zeichenfolgen verwendet, ich musste nicht (siehe nächste Zeile), aber ich mag es, weil es dabei hilft, die von mir verwendeten Variablen hervorzuheben. Zweitens fügen diese Zeilen einen Domänenbenutzer hinzu, wenn Sie einen lokalen Benutzer hinzufügen möchten, entfernen Sie ihn einfach$env:USERDOMAIN/


Ich möchte dieses Skript auf Arbeitsstationen so ausführen, dass die Person, die das Skript ausführt, einen Benutzernamen eingeben kann. Daher der Read-Host
Rihan Meij

1
so dass in diesem Fall die erste Zeile $ userinput = Read-Host machen „Geben Sie Benutzernamen an die lokale Admin - Gruppe hinzufügen“ , dann $ userinput verwenden , wo ist , sagt usernameiwantoadd
Jim B

0

Hier ist eine andere Möglichkeit, dies zu tun. Dies muss im Administratorkontext ausgeführt werden:

$ domain = ""
$ computername = "$ env: computername"
$ group = $ computer.psbase.children.find ("Administratoren")

Funktion AddToGroup ($ number)
{
     $ group.add ("WinNT: //" + $ domain + "/" + $ number)
}

# Fügen Sie diese Domänenbenutzer / -gruppen zur lokalen Administratorgruppe hinzu
 Zur Gruppe hinzufügen ""
 Zur Gruppe hinzufügen ""

# Fügen Sie diese Domänencomputerkonten der lokalen Administratorgruppe hinzu. 
# Computerkonten enden immer mit $.
AddToGroup "$"

Mehr Infos auf meiner Website .


0

Das Hinzufügen eines Kontos, das bereits in der Zielsicherheitsgruppe vorhanden ist, löst einen Fehler aus, sodass Sie überprüfen müssen, ob das Konto bereits hinzugefügt wurde. Meine Anforderung war jedoch, bis zu PowerShell v2.0 abwärtskompatibel zu sein

Im Folgenden finden Sie den Ausschnitt, den ich verwende, um der lokalen Administratorgruppe einen Benutzer hinzuzufügen, der in älteren Versionen von PowerShell für Windows Server vor 2016 ausgeführt wird. Im Codebeispiel wird der lokalen Administratorgruppe ein Dienstkonto hinzugefügt, das für die benutzerdefinierte IIS AppPool-Identität verwendet wird.

$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."
}

Die Gutschrift für die Verwendung net localgroup administratorsin der obigen if-Anweisung geht an diesen Blog-Beitrag .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.