Como usar o PowerShell para definir senhas de administrador local

O mundo da TI está em constante evolução, com demandas contínuas para manter a segurança e a operação ideal dos sistemas. Um aspecto vital dessas operações é o gerenciamento de credenciais de usuário, especialmente para contas de administrador. O tópico de hoje se concentra em um script do PowerShell que ajuda a definir senhas de administrador local, uma tarefa essencial para os profissionais de TI.

Histórico

As credenciais de usuário são os guardiões do acesso em um sistema. A senha do administrador, por ser uma credencial de acesso de alto nível, geralmente exige alterações oportunas para garantir a segurança do sistema. Os profissionais de TI e os provedores de serviços gerenciados (MSPs) se envolvem regularmente em tarefas que exigem modificações nessas senhas. O script fornecido simplifica esse procedimento, tornando-o eficiente e sem erros.

O roteiro

#Requires -Version 5.1

<#
.SYNOPSIS
    Sets the local Administrator password.
.DESCRIPTION
    Sets the local Administrator password, or other username.
.EXAMPLE
     -Password "Somepass1"
    Set's the local Administrator account's password to Somepass1
.EXAMPLE
     -UserName "Admin1" -Password "Somepass1"
    Set's the local Administrator account's password to Somepass1, but the account name is Admin1
.EXAMPLE
    PS C:> Set-LocalAdminPassword.ps1 -Password "Somepass1"
    Set's the local Administrator account's password to Somepass1
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
 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
    LocalUserAccountManagement
#>

[CmdletBinding()]
param (
    [Parameter()]
    [String]
    $UserName = "Administrator",
    [String]
    $Password
)

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 ($PSVersionTable.PSVersion.Major -le 2) {
        & net.exe $UserName $Password
        if ($LASTEXITCODE -gt 0) {
            $Password = $null
            exit $LASTEXITCODE
        }
    }
    else {
        try {
            Set-LocalUser -Name $UserName -Password (ConvertTo-SecureString -String $Password -AsPlainText -Force) -Confirm:$false
        }
        catch {
            Write-Error $_
            $Password = $null
            exit 1
        }
    }
}
end {
    $Password = $null
}

 

Acesse mais de 300 scripts no NinjaOne Dojo

Obter acesso

Detalhamento

Vamos dissecar o script para um entendimento mais claro:

  • Seção de Metadados: Essa parte fornece uma sinopse, uma descrição, exemplos de como usar o script, resultados, notas e componentes. Ele oferece uma visão geral instantânea para qualquer pessoa que esteja examinando o script pela primeira vez.
  • Vinculação e parâmetros de cmdlet: O script utiliza uma ligação de cmdlet, aprimorando sua funcionalidade com recursos avançados. Ele usa dois parâmetros:
  • $UserName: Especifica a senha do usuário a ser alterada, tendo como padrão “Administrador”.
  • $Password: A nova senha.
  • Início do bloco: Uma função, Test-IsElevated, verifica se o script é executado com privilégios elevados (de administrador), o que é crucial ao alterar as credenciais do usuário.
  • Bloco de processo: Esse é o coração do script.
  • Primeiro, ele verifica se o script tem direitos elevados e, se não tiver, interrompe a execução.
  • Dependendo da versão do PowerShell, ele usa métodos diferentes para alterar a senha:
  • Para o PowerShell versão 2 ou inferior, ele usa o comando net.exe.
  • Em versões posteriores, o cmdlet Set-LocalUser altera a senha.
  • Bloco final: Todos os dados residuais da senha na variável $Password são apagados, garantindo que nenhuma informação confidencial permaneça.

Casos de uso em potencial

Imagine um profissional de TI, John, em uma empresa de médio porte. Recentemente, eles sofreram uma violação de segurança e precisam alterar as senhas de administrador local em todos os sistemas como medida preventiva. John pode implementar esse script, garantindo que todos os computadores tenham suas senhas de administrador redefinidas de forma eficiente, economizando tempo e reduzindo erros humanos.

Comparações

Os métodos tradicionais de alteração de senhas geralmente envolvem o acesso manual a cada sistema ou o uso de comandos nativos como net user. No entanto, esse script oferece uma abordagem mais simplificada e automatizada, aproveitando os recursos do PowerShell. É mais eficiente, especialmente para operações em lote em várias máquinas.

Implicações

O uso de scripts como esse simplifica as tarefas administrativas. No entanto, a automatização das alterações de senha, se não for feita de forma segura, pode expor novas senhas. Certifique-se sempre de que a transmissão e o armazenamento de tais scripts sigam as práticas recomendadas de segurança.

Recomendações

  • Sempre execute esses scripts em um ambiente seguro.
  • Evite codificar senhas em scripts. Em vez disso, considere passá-las como argumentos ou usar gerenciadores de credenciais seguros.
  • Atualize regularmente os scripts para atender às versões mais recentes do sistema operacional e às iterações do PowerShell.

Considerações finais

Ferramentas como o NinjaOne ampliam o poder de scripts como esse. A integração de scripts automatizados em plataformas como o NinjaOne garante um processo tranquilo e sem erros, permitindo que os profissionais de TI se concentrem em tarefas mais urgentes. A combinação de scripts eficazes com plataformas de gerenciamento robustas abre caminho para uma infraestrutura de TI segura e eficiente.

 

FAQs

Sim, especifique um nome de usuário diferente usando o parâmetro -UserName.

O script será interrompido e exibirá a mensagem “Access Denied” (Acesso negado).

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.

Categories:

You might also like