Como desativar uma conta local no Windows usando o PowerShell

Os profissionais de TI e os provedores de serviços gerenciados (MSPs) conhecem o procedimento: Às vezes, é necessário desativar uma conta local em um computador Windows por motivos de segurança, conformidade ou outros motivos operacionais. É claro que existem ferramentas de GUI integradas para isso, mas quando você está gerenciando vários sistemas, a automação é fundamental. Hoje, vamos nos aprofundar em um script do PowerShell desenvolvido para automatizar essa tarefa, tornando-a mais rápida, mais segura e fácil de repetir.

O script permite desativar uma conta local no Windows por meio do PowerShell. Esse script do PowerShell é voltado especificamente para quem está procurando como desativar um usuário do sistema operacional Windows por meio do PowerShell ou para quem está se perguntando como desativar uma conta local no Windows. Portanto, sem mais delongas, vamos analisar esse script.

O roteiro

#Requires -Version 5.1

<#
.SYNOPSIS
    Disable a local account
.DESCRIPTION
    Disable a local account
.EXAMPLE
     -UserName "AdminTest"
    Disables the account AdminTest
.EXAMPLE
    PS C:> Disable-LocalAdminAccount.ps1 -UserName "Administrator"
    Disables the account AdminTest
.OUTPUTS
    None
    String[]
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
    (c) 2023 NinjaOne
    By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
    LocalBuiltInAccountManagement
#>

[CmdletBinding()]
param (
    # User name of a local account
    [Parameter(Mandatory = $true)]
    [String]
    $UserName
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    if ($(Get-Command -Name "Disable-LocalUser" -ErrorAction SilentlyContinue)) {
        # Disables $UserName using Disable-LocalUser
        try {
            Disable-LocalUser $UserName -Confirm:$false
        }
        catch {
            Write-Error $_
            exit 1
        }
    }
    else {
        # Disables $UserName using net.exe
        net.exe user $UserName /active:no
        if ($LASTEXITCODE -gt 0) {
            exit 1
        }
    }
}
end {}

 

Acesse mais de 300 scripts no NinjaOne Dojo

Obter acesso

Entendendo o roteiro

Aqui está uma breve sinopse:

  • O script começa testando se está sendo executado com privilégios administrativos. Caso contrário, ele será interrompido e exibirá uma mensagem de erro.
  • Ele verifica a presença do comando Disable-LocalUser incorporado. Se ele existe, ele o utiliza. Caso contrário, ele recorre ao comando net.exe user para desativar a conta de usuário.

O script exige que a variável $UserName seja preenchida. Essa é a conta local que você pretende desativar.

Pré-requisitos

  • Requisitos do sistema operacional: A arquitetura mínima de sistema operacional suportada inclui o Windows 10 e o Windows Server 2016.
  • Versão do PowerShell: Requer pelo menos o PowerShell 5.1.

Backup & Restore: Proceda com cautela

Antes de executar qualquer script do PowerShell que modifique as configurações do sistema, é fundamental fazer backup das configurações existentes ou, melhor ainda, de todo o sistema. Isso garante que você possa reverter para o estado anterior caso algo dê errado. Aqui estão alguns métodos de backup que você pode usar:

Ponto de restauração do sistema

Criar um ponto de restauração do sistema é uma maneira fácil e eficaz de fazer backup de suas configurações atuais. Veja como:

  • Abra o menu Iniciar e procure por “Criar um ponto de restauração”
  • Clique no resultado correspondente para abrir a janela Propriedades do sistema.
  • Vá para a guia “Proteção do sistema” e clique em “Criar”
  • Dê um nome ao seu ponto de restauração e salve-o.

Como fazer um backup completo do sistema

Para um backup completo, você pode criar uma imagem do sistema:

  • Abra o Painel de Controle.
  • Navegue até “System and Security” (Sistema e segurança) > “Backup and Restore (Windows 7)” (Backup e restauração)
  • No painel esquerdo, clique em “Create a system image” (Criar uma imagem do sistema)
  • Siga o assistente para concluir o backup.

Observação: Sempre teste o processo de restauração para garantir que o backup seja válido.

Tratamento de erros: O que fazer quando as coisas dão errado

O script do PowerShell inclui o tratamento básico de erros, mas, como em qualquer script, podem ocorrer erros. Veja abaixo alguns erros comuns e dicas de solução de problemas:

“Acesso negado. Por favor, execute com privilégios de administrador”

Esse erro ocorrerá se você tentar executar o script sem direitos administrativos. Certifique-se de clicar com o botão direito do mouse na janela do PowerShell e escolher “Executar como administrador”

A conta de usuário não existe

Se você inserir um nome de usuário que não existe, o script emitirá um erro. Verifique novamente o nome de usuário e tente outra vez.

O script não é executado

Se o script não for executado, verifique as configurações da política de execução do PowerShell. Talvez seja necessário alterar a política para permitir a execução do script. Use o seguinte comando para alterá-lo:

Set-ExecutionPolicy RemoteSigned

Lembre-se de voltar à configuração original depois de executar o script.

Tratamento de erros Catch-All

Se quiser estender o script para registrar os erros em um arquivo de texto para auditoria, modifique o bloco catch no script da seguinte forma:

catch { Write-Error $_ “Erro: $_” | Out-File “C:pathtoerrorlog.txt” -Append exit 1 }

Observação: Substitua “C:pathtoerrorlog.txt” pelo caminho desejado para o arquivo de registro.

Ao incorporar esses métodos de backup e tratamento de erros, você adiciona uma camada extra de segurança e confiabilidade ao executar o script.

Como isso pode ser útil?

Para profissionais de TI:

  • Segurança: Se você estiver gerenciando a infraestrutura de TI de uma organização, é fundamental saber como desativar uma conta local no Windows. Contas não autorizadas ou redundantes são riscos à segurança.
  • Conformidade: A conformidade regulamentar geralmente exige a desativação de determinadas contas. A automação desse processo garante que nenhuma etapa seja perdida.
  • Automação e escalabilidade: O script pode ser incluído como parte de uma sequência de automação maior, facilitando a desativação de contas em várias máquinas simultaneamente.

Para MSPs:

  • Multitenancy: Os MSPs podem integrar facilmente esse script em seus sistemas de gerenciamento centralizado. Isso simplifica o gerenciamento de vários clientes em um único painel.
  • Eficiência operacional: O recurso de automação desse script do PowerShell reduz a sobrecarga operacional.
  • SLAs e satisfação do cliente: A automação garante tempos de resposta mais rápidos e o cumprimento dos SLAs, o que se traduz diretamente em satisfação do cliente.

Considerações finais

Quando se trata de gerenciar contas locais, o script Disable-LocalAdminAccount.ps1 é uma ferramenta poderosa que você deve ter em seu arsenal. Aproveite o poder da automação e aprimore suas medidas de segurança integrando esse script aos seus fluxos de trabalho. Afinal, no atual cenário de TI em ritmo acelerado, a automação não é apenas um luxo, é uma necessidade.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categorias:

Recomendados para você

Aprimoramento da comunicação de TI: Domínio das mensagens pop-up do PowerShell

Simplifique a configuração de sua VPN: Configurar uma VPN com o PowerShell

Automatização da criação de atalhos para a área de trabalho remota usando o PowerShell

Como criar uma nova conta de usuário local com o PowerShell

Dominando o gerenciamento de energia do Windows: Um guia do PowerShell para profissionais de TI e MSPs

Como renomear máquinas Windows com o PowerShell

Termos e condições NinjaOne

Ao clicar no botão “Aceito” abaixo, você indica sua aceitação dos seguintes termos legais, bem como dos nossos Termos de Uso:

  • Direitos de propriedade: A NinjaOne é proprietária e continuará a ser proprietária de todos os direitos, títulos e interesses relativos ao script (incluindo os direitos autorais). A NinjaOne está concedendo a você uma licença limitada para usar o script de acordo com os presentes termos legais.
  • Limitação de uso: Você só poderá usar o script para fins comerciais internos ou pessoais legítimos, sendo vedado compartilhar o script com terceiros.
  • Proibição de republicação: Em nenhuma circunstância você tem permissão para republicar o script em qualquer biblioteca de scripts pertencente ou sob o controle de qualquer outro fornecedor de software.
  • Isenção de responsabilidade da garantia: O script é fornecido “no estado em que se encontra” e “conforme disponível”, sem qualquer tipo de garantia. A NinjaOne não promete ou garante que o script estará livre de defeitos ou que atenderá às suas necessidades ou expectativas específicas.
  • Assunção de riscos: O uso do script é por sua própria conta e risco. Você reconhece que há certos riscos inerentes ao uso do script, e você compreende e assume cada um desses riscos.
  • Renúncia e isenção de responsabilidade: Você não responsabilizará a NinjaOne por consequências adversas ou não intencionais resultantes do seu uso do script e renunciará a quaisquer direitos ou tutelas legais que possa ter contra a NinjaOne em relação ao seu uso do script.
  • EULA: Se você for cliente da NinjaOne, o uso do script está sujeito ao Contrato de Licença de Usuário Final aplicável a você (EULA).