PowerShell è sempre più lo strumento di scelta per gli amministratori di Windows. Il modulo PowerShell di Active Directory include più di 450 cmdlet che è possibile utilizzare per raccogliere informazioni su ogni oggetto in Active Directory, controllare lo stato dei controller di dominio, raccogliere informazioni GPO e altro ancora.
Questo articolo descrive come è possibile utilizzare PowerShell per trovare account utente e computer disabilitati e inattivi nei domini Active Directory.
Prerequisiti
Per utilizzare gli script forniti qui, è necessario:
- Installare il modulo PowerShell di Active Directory sulla macchina in cui verrà eseguito lo script. Quel computer deve essere in esecuzione Windows Server 2012 o versione successiva.
- Aprire la finestra di PowerShell in modalità elevata.
- Eseguire lo script utilizzando le credenziali che dispongono dell’autorizzazione per accedere a tutti i domini di Active Directory in cui si raccolgono i dati.
Controllo di un singolo dominio
Se è necessario verificare se un particolare account utente o computer è disabilitato o inattivo, è possibile farlo manualmente utilizzando lo snap-in Utenti e computer di Active Directory (o ADUC). Se è necessario identificare gli account disabilitati e inattivi in un dominio, tuttavia, è meglio automatizzare l’attività utilizzando PowerShell.
Ad esempio, per raccogliere account di computer disabilitati, è possibile utilizzare il cmdlet Get-ADComputer per cercare account di computer con la proprietà Abilitata impostata su False False, che indica che l’account è disabilitato:
Get-ADComputer -Filter {(Enabled -eq $False)} -ResultPageSize 2000 -ResultSetSize $null -Server <AnyDomainController> -Properties Name, OperatingSystem
Qui ci sono gli script per le attività correlate:
- Verificare se un singolo account utente è disabilitato
- Ottenere un elenco di utenti disabili
- Trovare gli account computer inattivi
- Trovare gli account utente inattivo
Controllo Su Più Domini
Se si desidera raccogliere informazioni da più domini di Active Directory avete bisogno di uno script PowerShell che può loop attraverso ogni dominio nella foresta di Active Directory e archivia i dati raccolti per ogni dominio in un file CSV separato per il team responsabile per il dominio.
Prima di eseguire lo script fornito di seguito, assicurarsi di:
- Creare una directory con il nome “C:\Temp” sul computer locale per memorizzare i file CSV.
- Sostituire “enterprise.com” nella variabile Cur CurForestName con il nome della tua foresta.
Script di esempio
$DomList = "C:\Temp\DomList.TXT"remove-item $DomList -ErrorAction SilentlyContinue$CurForestName="enterprise.com"$GetForest=Get-ADForest $CurForestName$Items = $R.DomainsForEach ($Domains in $Items){ Add-Content $DomList $Domain.Name}Write-Host "Starting Script..."ForEach ($DomInFile in $DomList){ $DisabledCompsCSV = "C:\Temp\DisabledAccounts_Computers_"+$DomInFile+".CSV" Remove-item $DisabledCompsCSV -ErrorAction SilentlyContinue $DisabledUsersCSV = "C:\Temp\DisabledAccounts_Users_"+$DomInFile+".CSV" Remove-item $DisabledUsersCSV -ErrorAction SilentlyContinue $InActiveUsersReport = "C:\Temp\InactiveUsers_"+$DomInFile+".CSV" Remove-item $InActiveUsersReport -ErrorAction SilentlyContinue Get-ADComputer -Server $DomInFile –Filter {(Enabled –eq $False)} –ResultPageSize 2000 –ResultSetSize $null -Properties Name, OperatingSystem | Export-CSV $DisabledCompsCSV -NoTypeInformation Search-ADAccount -Server $DomInFile –AccountDisabled –UsersOnly –ResultPageSize 2000 –ResultSetSize $null | Select-Object SamAccountName, DistinguishedName | Export-CSV $DisabledUsersCSV –NoTypeInformation Search-ADAccount -Server $DomInFile –AccountInActive –TimeSpan 90:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV $InActiveUsersReport –NoTypeInformation}Write-Host "Script Finished collecting required information. Please check report files under C:\Temp folder"
Condivisione dei report
Una volta generati i report CSV, è possibile inviare il file appropriato a ciascun team IT via e-mail. In alternativa, è possibile incorporare il cmdlet Send-MailMessage nello script in modo che lo script invii automaticamente tali e-mail. Discuteremo questo cmdlet in un prossimo articolo di questa serie.
Come Netwrix può aiutare
Sebbene l’utilizzo di PowerShell sia molto più veloce del controllo manuale degli account disabilitati e inattivi, ci vuole ancora molto lavoro per creare, mantenere ed eseguire script. Se sei una persona impegnata, considera di esaminare strumenti che automatizzano il lavoro e ti fanno risparmiare tempo. Ad esempio, armato del tracker utente inattivo gratuito, sarai in grado di pulire o bloccare rapidamente tutti i tuoi account utente obsoleti. E una soluzione solida come Netwrix Auditor per Active Directory ti consentirà di segnalare lo stato dell’account in pochi clic, nonché di automatizzare il controllo, scoprire i punti deboli della sicurezza e semplificare le indagini sugli incidenti.