Dodanie użytkownika do lokalnej grupy administratorów za pomocą programu PowerShell

16

Chciałbym użyć programu PowerShell, aby dodać określonego użytkownika do lokalnej grupy administratorów na komputerze. Uruchomiłbym skrypt PowerShell w kontekście użytkownika, który ma uprawnienia administracyjne na komputerze lokalnym.

Rihan Meij
źródło
Zobacz także [Windows Local Account and Group Maintenance] [1]. [1]: serverfault.com/questions/31058/…
Nathan Hartley

Odpowiedzi:

4

Jest to funkcja zaawansowana, której używam do dodawania użytkowników do lokalnej grupy administratorów za pomocą programu PowerShell na kilku komputerach.

Zastosowanie: Get-Content C: \ Computers.txt | Set-LocalAdminGroupMembership -Konto „Twoje konto”


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
użytkownik46713
źródło
20

Na serwerze 2016 i Windows 10 w wersji 1607 i nowszych można używać nowych poleceń cmdlet lokalnych użytkowników programu PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Zostało to dodane w Windows Management Framework (WMF) 5.1.

Microsoft.PowerShell.LocalAccountsModuł działa prawidłowo na 2012 R2, jeśli po prostu skopiować pliki do $env:PsModulePathlokalizacji.

Peter Hahndorf
źródło
1
Uważaj, grupa „Administratorzy” może być nazywana inną w zależności od ustawień regionalnych, w systemie niemieckim jest to „Administratoren”.
Panki
16

Oto prosty 2-wierszowy skrypt, który wykonuje tę funkcję

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

Aby uzyskać więcej informacji, zobacz Cześć, Skrypciarze! Jak użyć programu Windows PowerShell, aby dodać użytkownika domeny do grupy lokalnej?

Jest więc kilka notatek. W pierwszym wierszu użyłem konkatenacji łańcuchów, nie musiałem (patrz następny wiersz), ale lubię to, ponieważ pomaga to podkreślić zmienne, których używam. Po drugie, wiersze te dodadzą użytkownika domeny, jeśli chcesz dodać użytkownika lokalnego, po prostu usuń$env:USERDOMAIN/

Jim B.
źródło
Chciałbym uruchomić ten skrypt na stacjach roboczych w taki sposób, aby osoba uruchamiająca skrypt mogła wpisać nazwę użytkownika. Stąd Read Host
Rihan Meij
1
więc w takim przypadku utwórz pierwszy wiersz $ userInput = Read-Host „Wpisz nazwę użytkownika, aby dodać do lokalnej grupy administracyjnej”, a następnie użyj $ userinput tam, gdzie jest napisane nazwa użytkownikaiwantoadd
Jim B
0

Oto inny sposób, aby to zrobić. Należy to uruchomić w kontekście administratora:

$ domain = ""
$ nazwa_komputera = "$ env: nazwa_komputera"
$ group = $ computer.psbase.children.find („administratorzy”)

funkcja AddToGroup (liczba $)
{
     $ group.add („WinNT: //” + $ domain + ”/” + $ number)
}

# Dodaj tych użytkowników / grup domeny do lokalnej grupy administratorów
 Dodaj do grupy ""
 Dodaj do grupy ""

# Dodaj te konta komputerów domeny do lokalnej grupy administratorów. 
# Konta komputerowe zawsze kończą się na $.
AddToGroup „$”

Więcej informacji na mojej stronie internetowej .

Daniel Engberg
źródło
0

Dodanie konta, które już istnieje w docelowej grupie zabezpieczeń, podnosi się i występuje błąd, więc musisz sprawdzić, czy konto zostało już dodane, jednak moim wymaganiem była zgodność wsteczna do wersji PowerShell v2.0

Poniżej znajduje się fragment, którego używam do dodawania użytkownika do lokalnej grupy administratorów, która działa na starszych wersjach programu PowerShell dla serwerów Windows wcześniejszych niż 2016. Przykład kodu dodaje konto usługi używane do niestandardowej tożsamości aplikacji IIS AppPool do lokalnej grupy Administratorzy.

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

Podziękowania za użycie net localgroup administratorsw powyższym wyciągu if trafiają do tego postu na blogu .

Emil
źródło