Ajout d'un utilisateur au groupe Administrateur local à l'aide de PowerShell

16

Je souhaite utiliser PowerShell pour ajouter un utilisateur spécifique au groupe d'administrateurs local sur une machine. J'exécuterais le script PowerShell dans le contexte d'un utilisateur disposant de droits d'administration sur la machine locale.

Rihan Meij
la source
Voir également [Maintenance du compte local et du groupe Windows] [1]. [1]: serverfault.com/questions/31058/…
Nathan Hartley

Réponses:

4

Il s'agit de la fonction avancée que j'utilise pour ajouter des utilisateurs au groupe Administrateur local à l'aide de Powershell sur plusieurs ordinateurs.

Utilisation: 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
la source
20

Sur Server 2016 et Windows 10 version 1607 et versions ultérieures, vous pouvez utiliser les nouvelles applets de commande utilisateur local PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Cela a été ajouté dans Windows Management Framework (WMF) 5.1.

Le Microsoft.PowerShell.LocalAccountsmodule fonctionne correctement sur 2012 R2 si vous copiez simplement les fichiers dans un $env:PsModulePathemplacement.

Peter Hahndorf
la source
1
Attention, le groupe "Administrateurs" peut être appelé différemment selon votre localisation, sur un système allemand c'est "Administrateur".
Panki
16

Voici un simple script de 2 lignes qui remplit cette fonction

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

Pour plus d'informations, voir Hey, Scripting Guy! Comment puis-je utiliser Windows PowerShell pour ajouter un utilisateur de domaine à un groupe local?

Il y a donc quelques notes. Dans la première ligne, j'ai utilisé la concaténation de chaînes, je n'y étais pas obligé (voir la ligne suivante) mais j'aime bien car cela aide à accentuer les variables que j'utilise. Deuxièmement, ces lignes ajouteront un utilisateur de domaine, si vous souhaitez ajouter un utilisateur local, supprimez simplement$env:USERDOMAIN/

Jim B
la source
Je voudrais exécuter ce script sur les postes de travail de telle manière que la personne qui exécute le script puisse saisir un nom d'utilisateur. D'où le Read-Host
Rihan Meij
1
dans ce cas, faites la première ligne $ userInput = Read-Host "Entrez le nom d'utilisateur à ajouter au groupe d'administrateurs local", puis utilisez $ userinput où est dit usernameiwantoadd
Jim B
0

Voici une autre façon de procéder. Cela doit être exécuté dans le contexte Administrateur:

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

fonction AddToGroup ($ number)
{
     $ group.add ("WinNT: //" + $ domaine + "/" + $ numéro)
}

#Ajouter ces utilisateurs / groupes de domaine au groupe d'administrateurs local
 Ajouter au groupe ""
 Ajouter au groupe ""

# Ajoutez ces comptes d'ordinateurs de domaine au groupe d'administrateurs local. 
#Les comptes informatiques se terminent toujours par $.
AddToGroup "$"

Plus d'infos sur mon site .

Daniel Engberg
la source
0

L'ajout d'un compte qui existe déjà dans le groupe de sécurité cible entraîne une erreur et vous devez donc vérifier si le compte est déjà ajouté, mais mon exigence était d'être rétrocompatible jusqu'à PowerShell v2.0

Ci-dessous, l'extrait que j'utilise pour ajouter un utilisateur au groupe d'administrateurs local qui fonctionne sur les anciennes versions de PowerShell pour serveurs Windows antérieurs à 2016. L'exemple de code ajoute un compte de service utilisé pour l'identité IIS AppPool personnalisée au groupe d'administrateurs local.

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

Le crédit pour l'utilisation net localgroup administratorsdans la déclaration if ci-dessus va à ce billet de blog .

Emil
la source