Aggiunta di un utente al gruppo di amministratori locale tramite PowerShell


Risposte:


4

Questa è la funzione avanzata che uso per aggiungere un utente al gruppo di amministratori locale usando Powershell su più computer.

Utilizzo: 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

20

Su Server 2016 e Windows 10 versione 1607 e successive è possibile utilizzare i nuovi cmdlet di utenti locali di PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Questo è stato aggiunto in Windows Management Framework (WMF) 5.1.

Il Microsoft.PowerShell.LocalAccountsmodulo funziona perfettamente su 2012 R2 se si copiano i file in un $env:PsModulePathpercorso.


1
Fai attenzione, il gruppo "Amministratori" potrebbe essere chiamato diverso a seconda della tua lingua, su un sistema tedesco è "Amministratore".
Panki,

16

Ecco un semplice script a 2 righe che svolge questa funzione

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

Per ulteriori informazioni, vedere Hey, Scripting Guy! Come posso usare Windows PowerShell per aggiungere un utente di dominio a un gruppo locale?

Quindi ci sono un paio di note. Nella prima riga ho usato la concatenazione di stringhe, non dovevo (vedere la riga successiva) ma mi piace perché aiuta ad accentuare le variabili che sto usando. In secondo luogo, queste righe aggiungeranno un utente di dominio, se si desidera aggiungere un utente locale è sufficiente rimuoverlo$env:USERDOMAIN/


Vorrei eseguire questo script su workstation in modo tale che la persona che esegue lo script possa digitare un nome utente. Da qui l'host di
lettura

1
quindi in questo caso crea la prima riga $ userInput = Read-Host "Inserisci nome utente da aggiungere al gruppo di amministrazione locale" quindi usa $ userinput dove si dice usernameiwantoadd
Jim B

0

Ecco un altro modo per farlo. Questo deve essere eseguito nel contesto di amministratore:

$ Domain = ""
$ nomecomputer = "$ env: nomecomputer"
$ Group = $ computer.psbase.children.find ( "amministratori")

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

#Aggiungi questi utenti / gruppi di dominio al gruppo di amministratori locali
 AddToGroup ""
 AddToGroup ""

#Aggiungi questi account di computer di dominio al gruppo di amministratori locali. 
# Gli account dei computer terminano sempre con $.
AddToGroup "$"

Maggiori informazioni sul mio sito web .


0

L'aggiunta di un account già esistente nel gruppo di sicurezza di destinazione genera ed errore, quindi è necessario verificare se l'account è già stato aggiunto, tuttavia il mio requisito era di essere retrocompatibile fino a PowerShell v2.0

Di seguito è riportato lo snippet che utilizzo per aggiungere un utente al gruppo di amministratori locali che lavora su versioni precedenti di PowerShell per server Windows precedenti al 2016. L'esempio di codice aggiunge un account di servizio utilizzato per l'identità personalizzata IIS AppPool al gruppo Administrators locale.

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

Il credito per l'utilizzo net localgroup administratorsnell'istruzione if precedente va a questo post del blog .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.