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.

Rihan Meij
quelle
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
user46713
quelle
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 .

Peter Hahndorf
quelle
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/

Jim B
quelle
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 .

Daniel Classon
quelle
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 .

Emil
quelle