Come reimpostare le password degli utenti con PowerShell

La capacità di gestire l’accesso e le credenziali degli utenti è una componente essenziale dell’amministrazione IT. Che si tratti di una grande organizzazione con esigenze IT complesse o di un’azienda più piccola con requisiti semplici, un’attività comune è la gestione delle password. Lo script fornito offre un metodo per reimpostare le password degli utenti con PowerShell, sia per gli utenti Windows locali che in un ambiente Active Directory.

Background

Lo script è stato progettato principalmente per offrire ai professionisti IT e ai fornitori di servizi gestiti (MSP) un approccio semplificato per reimpostare le password degli utenti senza dover navigare nelle interfacce utente del sistema. Con il numero sempre crescente di utenti e la costante richiesta di applicare le pratiche di sicurezza, disporre di uno strumento che permetta di reimpostare le password degli utenti in modo rapido e affidabile è di valore inestimabile. Questo script, in particolare se combinato con strumenti come NinjaOne, offre automazione ed efficienza per queste attività.

Lo script per reimpostare le password degli utenti

#Requires -Version 5.1

<#
.SYNOPSIS
    Resets a users password.
.DESCRIPTION
    Resets a users password. Either a local user that this script runs on, or in Active directory.
.EXAMPLE
     -UserName "Fred" -Password "Somepass1"
    Resets Fred's password to Somepass1 .
.EXAMPLE
     -UserName "Fred" -Password "Somepass1" -IsDomainUser
    Resets Fred's password to Somepass1 in Active Directory.
.EXAMPLE
    PS C:> .Reset-User-Password.ps1 -UserName "Fred" -Password "Somepass1" -IsDomainUser
    Resets Fred's password to Somepass1 in Active Directory.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2012
    The RSAT feature for Active Directory needs to be installed on the computer this runs on.
    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
    ManageUsers
#>

[CmdletBinding()]
param (
    [Parameter(Mandatory = $true)]
    [String]
    $UserName,
    [Parameter(Mandatory = $true)]
    [String]
    $Password,
    [Switch]
    $IsDomainUser
)
    
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 ($IsDomainUser) {
        # Active Directory
        # Check if the ActiveDirectory module is installed
        if ((Get-Module -Name ActiveDirectory -ListAvailable -ErrorAction SilentlyContinue)) {
            try {
                # Try to import the ActiveDirectory module
                Import-Module -Name ActiveDirectory
            }
            catch {
                Write-Error -Message "Ninja Agent could not access AD, either RSAT was not installed or that the agent does not have permissions to add and remove users from groups."
                exit 5 # Access Denied exit code
            }
            try {
                $User = Get-ADUser -Identity $UserName
                Set-ADAccountPassword -Identity $User -Reset -NewPassword $(ConvertTo-SecureString -String $Password -AsPlainText -Force)    
                Write-Host "Reset Password for user: $UserName"
                exit 0
            }
            catch {
                Write-Host "Failed to Reset Password for user: $UserName"
                exit 1
            }
        }
        else {
            Write-Host "User ($UserName) does not exist."
            exit 1
        }
    }
    else {
        $User = Get-LocalUser -Name $UserName -ErrorAction SilentlyContinue
        if ($User) {
            try {
                Set-LocalUser -Name $UserName -Password $(ConvertTo-SecureString -String $Password -AsPlainText -Force) -Confirm:$false
                Write-Host "Reset Password for user: $UserName"
                exit 0
            }
            catch {
                Write-Host "Failed to Reset Password for user: $UserName"
                exit 1
            }
        }
        else {
            Write-Host "User ($UserName) does not exist."
            exit 1
        }    
    }
}
    
end {}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Parametri: Lo script per reimpostare le password degli utenti inizia con la definizione dei parametri richiesti, ovvero UserName e Password. Esiste anche un selettore opzionale, IsDomainUser, che, se utilizzato, specifica che l’operazione è destinata a un utente di Active Directory.

Inizializzazione:

Prima di reimpostare le password degli utenti, lo script controlla se viene eseguito con privilegi di amministratore. Ciò avviene tramite la funzione Test-IsElevated, che verifica il ruolo di chi sta eseguendo lo script.

Processo:

A seconda del valore dell’opzione IsDomainUser, lo script procede con due operazioni distinte:

  • Active Directory: Se il selettore IsDomainUser è impostato, lo script verifica la presenza del modulo ActiveDirectory, lo importa e quindi tenta di reimpostare la password dell’utente in Active Directory.
  • Utente locale: Senza l’opzione IsDomainUser, lo script cerca un utente locale, verificandone l’esistenza e tentando di reimpostare la password.

Casi d’uso potenziali

Immagina un amministratore IT, John, che gestisce l’infrastruttura di rete di un’azienda di medie dimensioni. Ha ricevuto diverse richieste da parte di dipendenti che hanno dimenticato le loro password. Invece di reimpostare le password degli utenti manualmente tramite l’interfaccia grafica, John utilizza questo script. Con un solo comando, ora può reimpostare le password degli utenti in blocco, risparmiando tempo e garantendo un approccio coerente.

Confronti

Tradizionalmente, reimpostare le password degli utenti in Windows o Active Directory richiedeva strumenti basati su GUI come “Gestione computer” per gli utenti locali o “Active Directory Users and Computers” per gli utenti AD. Sebbene questi strumenti siano solidi e ricchi di funzionalità, spesso comportano più passaggi. Questo script PowerShell offre un approccio più rapido per reimpostare le password degli utenti, da riga di comando, che può essere facilmente integrato nei flussi di lavoro di automazione.

Domande frequenti

  • Sono necessari i privilegi di amministratore?  Sì, lo script per reimpostare le password degli utenti deve essere eseguito con i privilegi di amministratore.
  • Questo script può gestire sia utenti locali che AD?  Sì, utilizzando l’opzione IsDomainUser, lo script può essere utilizzato con gli utenti AD.

Implicazioni

Se da un lato lo script per reimpostare le password degli utenti offre efficienza, dall’altro porta con sé delle implicazioni di sicurezza. Un uso improprio può portare ad accessi indesiderati o al blocco dell’account. Assicurati sempre che le password vengano reimpostate in modo responsabile e con la consapevolezza dell’utente.

Raccomandazioni

  • Esegui sempre un backup prima di apportare modifiche su larga scala.
  • Testa lo script per reimpostare le password degli utenti in un ambiente controllato prima di utilizzarlo in produzione.
  • Utilizza password forti e uniche quando le reimposti.

Considerazioni finali

Per i professionisti IT che cercano di automatizzare ulteriormente le operazioni, strumenti come NinjaOne possono essere complementari a questo script per reimpostare le password degli utenti. NinjaOne offre solide soluzioni di gestione IT che si integrano bene con script personalizzati come questo, consentendo ai professionisti di ottenere il massimo dalla loro infrastruttura. Garantire che gli utenti possano accedere in modo sicuro ai loro account è fondamentale nella gestione IT. Sfruttando PowerShell e strumenti come NinjaOne è possibile ridurre la complessità di attività come la reimpostazione delle password, consentendo ai team IT di concentrarsi su questioni più urgenti.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento di erogazione dei servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare in termini di assistenza tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Scopri qualcosa in più su NinjaOne Endpoint Management, fai un tour dal vivo o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.