Come creare, modificare e testare le password utilizzando PowerShell
Oct 16, 2018
L'automazione è la chiave per semplificare i compiti di gestione di Active Directory. In questo articolo, vi mostrerò come creare, modificare e testare le password degli utenti con gli script di PowerShell.
Installazione del modulo PowerShell di AD
Prima di poter utilizzare PowerShell per gestire Active Directory, è necessario installare il modulo PowerShell di Active Directory. Se stai utilizzando Windows 10 per gestire AD, installa prima gli Strumenti di amministrazione remota del server (RSAT).
Windows 10 Versione 1809
Se stai utilizzando la versione 1809 di Windows 10, RSAT è incluso come Funzionalità su Richiesta, quindi non è necessario scaricare il pacchetto RSAT. Per abilitare RSAT nella versione 1809 di Windows 10, esegui il seguente comando in una console PowerShell elevata:
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Versioni precedenti di Windows 10
Se stai utilizzando una versione precedente di Windows 10, scarica il pacchetto RSAT appropriato dal sito web di Microsoft:
- Se stai gestendo la versione di Windows Server 1803 o 1709, scarica e installa il pacchetto WS_1803.
- Se stai gestendo Windows Server 2016 o versioni precedenti di Windows Server, scarica e installa il pacchetto WS2016.
Una volta installato RSAT, avvia la console PowerShell come amministratore locale e abilita il modulo AD PowerShell utilizzando questo comando PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Crea credenziale con password utilizzando PowerShell
Per creare un nuovo account utente, utilizzare il cmdlet New-ADUser. Nell'esempio sottostante, ho inserito in modo fisso il dominio ad.contoso.com nella variabile $UPN. Dovresti modificarlo per corrispondere al suffisso UPN che desideri assegnare agli utenti.
Fornisci il nome e il cognome dell'utente. L'UPN e il SamAccountName verranno poi creati aggiungendo un punto tra il nome e il cognome. Utilizza il seguente script PowerShell:
$GivenName = (Read-Host -Prompt "First Name")
$Surname = (Read-Host -Prompt "Last Name")
$User = $GivenName+"."+$Surname
$UPN = $User+"@ad.contoso.com"
$Password = (Read-Host -Prompt "Password" -AsSecureString)
New-ADUser -Name $User -SamAccountName $User -UserPrincipalName $UPN -AccountPassword $Password -GivenName $GivenName -Surname $Surname -Enabled $True
Crea una nuova password utente AD utilizzando PowerShell
Il seguente codice ti chiederà di specificare un nome utente e una password. Devi inserire un nome utente che esista già in AD e una password che soddisfi i requisiti di complessità della password del dominio.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Cambia password utilizzando PowerShell
- Cambia la password di un utente locale
Per cambiare la password di un utente locale, è necessario utilizzare i cmdlet Get-LocalUser e Set-LocalUser:
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Cambia la password di un utente AD
Per creare una nuova password utente AD utilizzando PowerShell, utilizzare lo script seguente. Vi verrà chiesto di specificare il nome utente di un account AD esistente e poi una nuova password, che deve soddisfare i requisiti di complessità della password del dominio.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
- Obbliga un utente a cambiare la propria password al prossimo accesso
Il cmdlet Set-LocalUser non supporta l'impostazione di un account utente locale per forzare un cambio di password al prossimo accesso. Tuttavia, puoi ottenere lo stesso risultato forzando la scadenza della password:
$User = (Read-Host -Prompt "Username")
$Usrstring = "WinNT://localhost/"+$User
$usr=[ADSI] $Usrstring
$usr.passwordExpired = 1
$usr.setinfo()
Ma puoi obbligare gli utenti a cambiare le password dei loro account AD utilizzando Set-ADAccountPassword:
$User = (Read-Host -Prompt "Username")
Set-Aduser -Identity $User -ChangePasswordAtLogon $true
- Cambia la password di un amministratore
Per cambiare la password dell'AD administrator, digita administrator quando ti viene richiesto un nome utente utilizzando il codice qui sotto:
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Per cambiare la password di un amministratore locale, digitare administrator quando viene richiesto un nome utente:
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Modifica l'attributo “password never expires”
Per impostare l'attributo “password never expires” su un account utente locale, utilizzare Set-LocalUser:
$User = (Read-Host -Prompt "Username")
Set-LocalUser -Name $User -PasswordNeverExpires $true
Per impostare l'attributo “password never expires” su un account utente di Active Directory, utilizzare Set-ADUser:
$User = (Read-Host -Prompt "Username")
Set-ADUser -Identity $User -PasswordNeverExpires $true
- Cambia la password dell'account di servizio
Per modificare le proprietà di accesso di un servizio, utilizzare i cmdlet Get-Credential e Set-Service. Il seguente codice cambia il servizio AppReadiness dall'uso dell'account Sistema Locale all'uso del nome utente e della password che vengono inseriti quando richiesto. Notare che il parametro Set-Service -Credential è supportato solo in PowerShell 6 e versioni successive.
$credential = Get-Credential
Set-Service -Name "AppReadiness" -Credential $credential
- Modifica la data di scadenza di una password in Active Directory
Se è necessario prolungare il periodo durante il quale un utente può mantenere la propria password attuale, impostare l'attributo pwsLastSet alla data corrente, concedendo loro tempo aggiuntivo fino a quando Active Directory li obbligherà a cambiare la password. Cancellare l'attributo e poi impostarlo a -1 lo setterà alla data e ora correnti.
$Username = (Read-Host -Prompt "Username")
$User = Get-ADUser $Username -Properties pwdlastset
$User.pwdlastset = 0
Set-ADUser -Instance $User
$User.pwdlastset = -1
Set-ADUser -Instance $User
- Reimpostazione massiva delle password
Il modo migliore per far cambiare agli utenti le loro password di AD è forzare un reset della password. Puoi farlo in massa combinando i cmdlet Get-ADUser e Set-ADUser. Il comando qui sotto utilizza un filtro per ottenere gli utenti nell'unità organizzativa (OU) “Accounts” e indirizza i risultati al cmdlet Set-ADUser per forzare tutti gli utenti nell'OU a cambiare la loro password al prossimo accesso.
Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Accounts,DC=ad,DC=contoso,DC=com" |
Set-ADUser -ChangePasswordAtLogon $true
Verifica delle credenziali di un utente
Se vuoi testare se le credenziali di un utente funzionano, tutto ciò che devi fare è avviare un processo utilizzando il loro nome utente e password. Il codice sottostante avvia cmd.exe utilizzando le credenziali inserite quando richiesto.
Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
Condividi su
Scopri di più
Informazioni sull'autore
Russell Smith
Consulente IT
Consulente IT e autore specializzato in tecnologie di gestione e sicurezza. Russell ha più di 15 anni di esperienza nel settore IT, ha scritto un libro sulla sicurezza di Windows e ha coautore di un testo per la serie Microsoft’s Official Academic Course (MOAC).
Scopri di più su questo argomento
Gestione della configurazione per il controllo sicuro degli endpoint
Leggi sulla Privacy dei Dati per Stato: Diversi Approcci alla Protezione della Privacy
Esempio di Analisi del Rischio: Come Valutare i Rischi
Il Triangolo CIA e la sua applicazione nel mondo reale
Cos'è la gestione dei documenti elettronici?