Agregar un usuario al grupo de administradores locales usando powershell

16

Me gustaría usar PowerShell para agregar un usuario específico al grupo de administradores locales en una máquina. Estaría ejecutando el script de PowerShell en el contexto de un usuario que tiene derechos de Administración en la máquina local.

Rihan Meij
fuente
Consulte también [Cuenta local de Windows y mantenimiento grupal] [1]. [1]: serverfault.com/questions/31058/…
Nathan Hartley

Respuestas:

4

Esta es la función avanzada que uso para agregar usuarios al grupo de administradores locales que usan Powershell en varias computadoras.

Uso: Get-Content C: \ Computers.txt | Set-LocalAdminGroupMembership -Cuenta '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
usuario46713
fuente
20

En Server 2016 y Windows 10 versión 1607 y posteriores, puede usar los nuevos cmdlets de usuario local de PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Esto se agregó en Windows Management Framework (WMF) 5.1.

El Microsoft.PowerShell.LocalAccountsmódulo funciona bien en 2012 R2 si solo copia los archivos en una $env:PsModulePathubicación.

Peter Hahndorf
fuente
1
Tenga cuidado, el grupo "Administradores" podría llamarse diferente dependiendo de su ubicación, en un sistema alemán es "Administradores".
Panki
16

Aquí hay un script simple de 2 líneas que realiza esta función

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

Para obtener más información, consulte Hey, Scripting Guy! ¿Cómo puedo usar Windows PowerShell para agregar un usuario de dominio a un grupo local?

Entonces hay un par de notas. En la primera línea utilicé la concatenación de cadenas, no tuve que hacerlo (ver la siguiente línea) pero me gusta porque ayuda a acentuar las variables que estoy usando. En segundo lugar, estas líneas agregarán un usuario de dominio, si desea agregar un usuario local simplemente elimine$env:USERDOMAIN/

Jim B
fuente
Me gustaría ejecutar este script en estaciones de trabajo de tal manera que la persona que ejecuta el script pueda escribir un nombre de usuario. De ahí el Read-Host
Rihan Meij
1
así que en ese caso haga la primera línea $ userInput = Read-Host "Ingrese el nombre de usuario para agregar al grupo de administración local" y luego use $ userinput donde dice usernameiwantoadd
Jim B
0

Aquí hay otra forma de hacer esto. Esto debe ejecutarse en el contexto del administrador:

$ dominio = ""
$ computername = "$ env: computername"
$ group = $ computer.psbase.children.find ("administradores")

función AddToGroup ($ number)
{
     $ group.add ("WinNT: //" + $ dominio + "/" + $ número)
}

# Agregue estos usuarios / grupos de dominio al grupo de administradores locales
 Añadir al grupo ""
 Añadir al grupo ""

# Agregue estas cuentas de computadora de dominio al grupo de administradores locales. 
# Las cuentas de computadora siempre terminan con $.
AddToGroup "$"

Más información en mi sitio web .

Daniel Engberg
fuente
0

Agregar una cuenta que ya existe en el grupo de seguridad objetivo aumenta y se produce un error, por lo que debe verificar si la cuenta ya está agregada, sin embargo, mi requisito era ser compatible con versiones anteriores de PowerShell v2.0

A continuación se muestra el fragmento que utilizo para agregar un usuario al grupo de administradores locales que funciona en versiones anteriores de PowerShell para servidores de Windows anteriores a 2016. El ejemplo de código agrega una cuenta de servicio utilizada para la identidad personalizada de IIS AppPool al grupo de administradores locales.

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

El crédito por usar net localgroup administratorsen la declaración if anterior va a esta publicación de blog .

Emil
fuente