Como adicionar, excluir e alterar usuários e grupos locais com o PowerShell
Sep 18, 2018
Gerenciar usuários e grupos locais com o PowerShell é simplificado através do módulo Microsoft.PowerShell.LocalAccounts, que fornece cmdlets para criar, modificar, desativar ou remover contas e grupos. Os administradores podem automatizar tarefas como adicionar usuários a grupos, redefinir senhas ou revisar membros, enquanto também gerenciam contas vinculadas ao Microsoft e Azure AD-linked accounts. A gestão remota por meio de sessões do PowerShell simplifica ainda mais a administração, embora a auditoria de alterações permaneça essencial para a segurança e conformidade.
Para ajudar os administradores a gerenciar usuários e grupos locais com PowerShell mais facilmente, a Microsoft fornece uma coleção de cmdlets chamada Microsoft.PowerShell.LocalAccounts. Anteriormente, era necessário baixar e importar explicitamente para o PowerShell, além de instalar o Windows Management Framework 5.1; nos sistemas operacionais Windows Server 2016 e Windows 10, a coleção de cmdlets já está incluída como um módulo padrão.
Existem 15 cmdlets no módulo LocalAccounts. Você pode ver a lista completa executando o seguinte comando:
Get-Command -Module Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember — Adicione um usuário ao grupo local
- Disable-LocalUser —Desativar uma conta de usuário local
- Enable-LocalUser — Ativar uma conta de usuário local
- Get-LocalGroup — Visualize as preferências do grupo local
- Get-LocalGroupMember — Veja a lista de todos os membros do grupo local
- Get-LocalUser — Visualize as preferências de uma conta de usuário local
- New-LocalGroup — Criar um novo grupo local
- New-LocalUser — Criar uma nova conta de usuário local
- Remove-LocalGroup — Remover um grupo local
- Remove-LocalGroupMember — Remover um membro de um grupo local
- Remove-LocalUser — Remover uma conta de usuário local
- Rename-LocalGroup — Renomear um grupo local
- Rename-LocalUser — Renomear uma conta de usuário local
- Set-LocalGroup — Altere as configurações de um grupo local
- Set-LocalUser — Altere as configurações de conta de um usuário local
Gerenciando Contas de Usuário Locais com PowerShell
Vamos ver como você pode usar esses comandos para realizar tarefas comuns relacionadas à gestão de usuários locais em um computador com Windows 10.
Listando usuários e suas propriedades com PowerShell
Primeiro, vamos obter uma lista de todas as contas de usuário locais na máquina. Usaremos o cmdlet Get-LocalUser:
Get-LocalUser
Como você pode ver, temos duas contas de usuário locais, e uma delas está desativada (aquela que tem “Falso” na coluna “Habilitado”).
Se você deseja exibir todas as propriedades e seus valores para uma conta de usuário local, precisa usar o cmdlet Get-LocalUser com os seguintes parâmetros:
Get-LocalUser -Name ‘guest’ | Select-Object *
Para obter o valor de um atributo específico de uma conta de usuário local, digite o nome dele após o parâmetro Select-Object. Neste exemplo, queremos saber o valor do atributo PasswordLastSet para a conta com o nome de usuário “administrator”:
Get-LocalUser -Name ‘administrator’ | Select-Object PasswordLastSet
Criando um usuário local com PowerShell
Vamos criar um novo usuário com a ajuda do cmdlet New-LocalUser. Este cmdlet pode criar os seguintes tipos de contas de usuário:
- Contas de usuário local do Windows
- Contas da Microsoft
- Contas do Azure Active Directory
Ao criar uma conta de usuário local, nunca digite a senha como texto simples; sempre a converta para uma string segura usando o parâmetro ?AsSecureString ou ?ConvertTo-SecureString. Aqui está o comando para criar uma nova conta de usuário local:
$UserPassword = Read-Host –AsSecureString
New-LocalUser "Netwrix" -Password $UserPassword -FullName "Netwrix" -Description "CompleteVisibility"
Em um ambiente Windows 10, os usuários podem se autorizar sob suas contas Microsoft, então podemos criar uma nova conta de usuário local que se vincula às credenciais de uma conta Microsoft. Use o seguinte script para fazer isso (observe que você não precisa digitar a senha porque ela está armazenada na nuvem da Microsoft):
New-LocalUser -Name "MicrosoftAccountSomeAccount@outlook.com" -Description "Microsoft Account"
Para criar uma conta local que se vincule ao seu Azure AD, use o seguinte comando:
New-LocalUser -Name "AzureADNetwrix@enterprise.com" -Description "Azure AD Account"
Alterando a senha de um usuário local ou propriedades da senha com PowerShell
Para alterar a senha de uma conta de usuário local, precisamos usar o cmdlet Set-LocalUser. Vamos mudar a senha do administrador local:
$UserPassword = Read-Host –AsSecureString
Set-LocalUser -Name Administrator -Password $UserPassword –Verbose
Para definir a opção Password never expires para um usuário local com PowerShell, precisamos executar o seguinte script:
Set-LocalUser -Name Netwrix –PasswordNeverExpires $False
Excluindo uma conta de usuário local com PowerShell
Para remover uma conta de usuário local, você precisa usar o cmdlet Remove-LocalUser:
Remove-LocalUser -Name Netwrix -Verbose
Gerenciando Grupos Locais com PowerShell
Agora vamos voltar nossa atenção dos usuários locais para os grupos locais.
Revisando grupos locais com PowerShell
Primeiro, vamos obter uma lista de todos os grupos no nosso Windows Server:
Get-LocalGroup
Adicionando um grupo local com PowerShell
Agora vamos criar um novo grupo:
New-LocalGroup -Name 'Netwrix Users' -Description 'Netwrix Users Group'
Adicionando usuários a um grupo local com PowerShell
Para adicionar um usuário (ou grupo) a um grupo local, precisamos usar o cmdlet Add-LocalGroupMember. Por exemplo, suponha que queremos adicionar usuários ao grupo local de Administradores, mas não queremos adicioná-los um por um. Vamos adicionar um grupo aos Administradores locais, nomeadamente o grupo “Netwrix Users”:
Add-LocalGroupMember -Group 'Administrators' -Member ('Netwrix',’Netwrix Users') –Verbose
Se o seu computador ou servidor faz parte do domínio, você também pode adicionar contas de domínio e grupos a grupos locais para conceder a esses usuários direitos locais especiais no servidor. Adicione-os usando o formato “DomainNameUser” (para um usuário) ou “DomainNameDomain Group” (para um grupo).
Visualizando a associação de um grupo específico com PowerShell
Agora vamos listar todos os membros de um grupo local específico:
Get-LocalGroupMember -Group 'Netwrix Users'
Como você pode ver, o comando exibe todas as contas locais e grupos que são membros do grupo “Netwrix Users”. Embora apenas contas e grupos locais estejam listados aqui, este comando também mostrará quaisquer usuários e grupos de domínio, bem como todas as contas Microsoft e Azure AD.
Visualizando todos os grupos dos quais um usuário é membro usando PowerShell
Para listar todos os grupos dos quais um usuário específico é membro, executaríamos o seguinte script:
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member 'Guest' –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}
Removendo um grupo local com PowerShell
Para remover uma conta de usuário local de um grupo, você precisa usar o cmdlet Remove-LocalGroupMember:
Remove-LocalGroupMember -Group 'Netwrix Users' –Member 'guest'
Gerenciando usuários e grupos locais remotamente com PowerShell
Se você deseja gerenciar contas de usuário local e grupos remotamente, precisa se conectar às estações de trabalho remotas via WinRM usando os cmdlets Invoke-Command e Enter-PSSession. Por exemplo, se quisermos exibir a associação do grupo Admin local remotamente em vários computadores, precisamos executar o seguinte script:
$search = new-pssession -computer pcname1,pcname2,pcname3
invoke-command -scriptblock {Get-LocalGroupMember -Group 'Administrators'} -session $search -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"
As you can see, it is rather easy to manage local groups and users via PowerShell, but to ensure security, compliance and business continuity, it’s essential to audit all these changes. To learn about configuring native auditing, please refer to the Windows Server Auditing Quick Reference Guide.
Compartilhar em
Saiba Mais
Sobre o autor
Jeff Melnick
Diretor de Engenharia de Sistemas
Jeff é um ex-Diretor de Engenharia de Soluções Globais na Netwrix. Ele é um blogueiro, palestrante e apresentador da Netwrix há muito tempo. No blog da Netwrix, Jeff compartilha lifehacks, dicas e truques que podem melhorar drasticamente sua experiência em administração de sistemas.
Saiba mais sobre este assunto
Criar usuários do AD em massa e enviar suas credenciais por e-mail usando PowerShell
Como criar, alterar e testar senhas usando PowerShell
Como adicionar e remover grupos AD e objetos nos grupos com PowerShell
Confianças no Active Directory
Ataques de ransomware ao Active Directory