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
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.