Adicionando um usuário ao grupo Administrador local usando o PowerShell


16

Eu gostaria de usar o PowerShell para adicionar um usuário específico ao grupo de administradores locais em uma máquina. Eu estaria executando o script do PowerShell no contexto de um usuário com direitos de administração na máquina local.


Veja também [Manutenção local da conta e grupo do Windows] [1]. [1]: serverfault.com/questions/31058/…
Nathan Hartley

Respostas:


4

Esta é a função avançada que eu uso para adicionar usuários ao grupo local de Administradores usando o Powershell em vários computadores.

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

No Server 2016 e Windows 10 versão 1607 e posterior, você pode usar os novos cmdlets de usuário local do PowerShell:

Add-LocalGroupMember -Group Administrators -Member username

Isso foi adicionado no Windows Management Framework (WMF) 5.1.

O Microsoft.PowerShell.LocalAccountsmódulo funcionará bem no 2012 R2 se você apenas copiar os arquivos em um $env:PsModulePathlocal.


1
Cuidado, o grupo "Administradores" pode ser chamado de diferente, dependendo do local, pois em um sistema alemão é "Administratoren".
Panki

16

Aqui está um script simples de 2 linhas que executa essa função

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

Para mais informações, consulte Ei, Equipe de Scripts! Como posso usar o Windows PowerShell para adicionar um usuário de domínio a um grupo local?

Portanto, existem algumas notas. Na primeira linha, usei concatenação de strings, não precisava (veja a próxima linha), mas gosto porque ajuda a acentuar as variáveis ​​que estou usando. Segundo, essas linhas adicionarão um usuário de domínio, se você quiser adicionar um usuário local, basta remover$env:USERDOMAIN/


Eu gostaria de executar este script nas estações de trabalho de forma que a pessoa que está executando o script possa digitar um nome de usuário. Daí o Read-Host
Rihan Meij

1
Então, nesse caso fazer a primeira linha $ userInput = Read-Host "Enter nome de usuário para adicionar ao grupo administrador local", em seguida, usar $ userinput onde é diz usernameiwantoadd
Jim B

0

Aqui está outra maneira de fazer isso. Isso precisa ser executado no contexto do administrador:

$ domain = ""
$ nome do computador = "$ env: nome do computador"
$ group = $ computer.psbase.children.find ("administradores")

função AddToGroup ($ number)
{
     $ group.add ("WinNT: //" + $ domain + "/" + $ number)
}

# Adicione esses usuários / grupos de domínio ao grupo de administradores locais
 AddToGroup ""
 AddToGroup ""

# Adicione essas contas de computador do domínio ao grupo de administradores locais. 
#As contas de computador sempre terminam com $.
AddToGroup "$"

Mais informações no meu site .


0

A adição de uma conta que já existe no grupo de segurança de destino gera erros e, portanto, é necessário verificar se a conta já foi adicionada. No entanto, meu requisito era ser compatível com versões anteriores do PowerShell v2.0

Abaixo está o trecho que eu uso para adicionar um usuário ao grupo de administradores locais que trabalha em versões mais antigas do PowerShell para servidores Windows anteriores a 2016. O exemplo de código adiciona uma conta de serviço usada para a identidade personalizada do AppPool do IIS ao grupo local de Administradores.

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

O crédito pelo uso net localgroup administratorsna instrução if acima vai para esta postagem do blog .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.