PowerShell è uno strumento potente nell’arsenale dei professionisti IT, spesso sfruttato per la sua capacità di automatizzare le attività ed estrarre i dati con facilità. Un’attività critica che i Managed Service Provider (MSP) e gli amministratori di sistema si trovano ad affrontare di frequente è quella di elencare gli utenti di un sistema informatico. Oggi analizzeremo uno script PowerShell progettato appositamente per questo scopo: elencare gli utenti locali.
Background
È innegabile che nell’ambiente IT di oggi, caratterizzato da ritmi frenetici, la capacità di estrarre rapidamente i dati sugli utenti di un sistema sia preziosa. Ciò è particolarmente vero nelle grandi aziende o quando si distribuiscono nuove apparecchiature o software. Gli amministratori di sistema e gli MSP si trovano spesso a dover capire chi ha accesso a cosa e quando. Lo script PowerShell fornito soddisfa l’esigenza di elencare gli utenti locali su un computer Windows, consentendo ai professionisti di ottenere rapidamente informazioni.
Lo script per elencare gli utenti locali
#Requires -Version 2.0 <# .SYNOPSIS Lists local computers' users. .DESCRIPTION Lists local computers' users. By default it lists only the enabled users. .EXAMPLE No parameters needed. Lists enabled users on the local computer. .EXAMPLE -AllUsers Lists enabled and disabled users on the local computer. .EXAMPLE PS C:> List-Users.ps1 -AllUsers Lists enabled and disabled users on the local computer. .OUTPUTS System.Management.Automation.SecurityAccountsManager.LocalUser[] .NOTES Minimum OS Architecture Supported: Windows 7, Windows Server 2012 Release Notes: Initial Release .COMPONENT ManageUsers #> [CmdletBinding()] param ( # Will return disabled users as well as enabled users [Switch] $AllUsers ) begin { Write-Output "Starting List Users" } process { # If we are running powershell under a 32bit OS or running a 32bit version of powershell # or we don't have access to Get-LocalUser if ( [Environment]::Is64BitProcess -ne [Environment]::Is64BitOperatingSystem -or (Get-Command -Name "Get-LocalUser" -ErrorAction SilentlyContinue).Count -eq 0 ) { # Get users from net.exe user $Data = $(net.exe user) | Select-Object -Skip 4 # Check if the command ran the way we wanted and the exit code is 0 if ($($Data | Select-Object -last 2 | Select-Object -First 1) -like "*The command completed successfully.*" -and $LASTEXITCODE -eq 0) { # Process the output and get only the users $Users = $Data[0..($Data.Count - 3)] -split 's+' | Where-Object { -not $([String]::IsNullOrEmpty($_) -or [String]::IsNullOrWhiteSpace($_)) } # Loop through each user $Users | ForEach-Object { # Get the Account active property look for a Yes $Enabled = $(net.exe user $_) | Where-Object { $_ -like "Account active*" -and $($_ -split 's+' | Select-Object -Last 1) -like "Yes" } # Output Name and Enabled almost like how Get-LocalUser displays it's data [PSCustomObject]@{ Name = $_ Enabled = if ($Enabled -like "*Yes*") { $true }else { $false } } } | Where-Object { if ($AllUsers) { $_.Enabled }else { $true } } } else { exit 1 } } else { try { if ($AllUsers) { Get-LocalUser } else { Get-LocalUser | Where-Object { $_.Enabled -eq $true } } } catch { Write-Error $_ exit 1 } } } end { Write-Output "Completed List Users" }
Accedi a oltre 700 script nel Dojo di NinjaOne
Analisi dettagliata
Lo script per elencare gli utenti locali è piuttosto semplice. Inizia definendo un parametro, $AllUsers, che quando viene utilizzato, include nel suo output sia gli utenti abilitati che quelli disabilitati. Nel blocco “processo”, lo script per elencare gli utenti locali verifica innanzitutto l’architettura del sistema e la disponibilità del cmdlet Get-LocalUser. Se c’è una mancata corrispondenza o il cmdlet non è disponibile, lo script per elencare gli utenti locali torna a usare il comando legacy net.exe user. I dati ricavati da entrambi i metodi vengono quindi elaborati per elencare gli utenti. Quando si utilizza il comando net.exe user, lo script per elencare gli utenti locali recupera lo stato degli utenti, controllando se ogni account è attivo. Quindi fornisce questi dati in modo strutturato. Negli scenari in cui Get-LocalUser è disponibile, lo script per elencare gli utenti locali recupera ed elenca direttamente gli utenti, filtrando solo quelli abilitati, a meno che non venga utilizzato il parametro $AllUsers.
Casi d’uso potenziali
Immagina una professionista dell’IT, Jane, che sta distribuendo un nuovo aggiornamento del software in tutta la sua azienda. Prima di distribuire l’aggiornamento, deve verificare gli account utente su ogni macchina per assicurarsi che tutte le licenze software siano assegnate correttamente. Invece di controllare manualmente ogni computer, utilizza lo script PowerShell per elencare gli utenti locali, risparmiando ore del suo tempo prezioso.
Confronti
Lo script per elencare gli utenti locali utilizza il cmdlet Get-LocalUser quando è possibile, e l’approccio alternativo che utilizza net.exe user è un modo per permettere allo script di funzionare su sistemi legacy. Altri script potrebbero affidarsi esclusivamente a cmdlet o metodi più recenti. Il doppio approccio dello script per elencare gli utenti locali garantisce la compatibilità con un’ampia gamma di sistemi Windows, rendendolo versatile in diversi ambienti.
Domande frequenti
- Lo script per elencare gli utenti locali può essere utilizzato su qualsiasi macchina Windows?
È progettato per Windows 7, Windows Server 2012 e versioni successive.
- Cosa succede se Get-LocalUser non è disponibile sul mio sistema?
Lo script per elencare gli utenti locali ricorre automaticamente al comando net.exe user se Get-LocalUser non è disponibile o se c’è una mancata corrispondenza in termini di architettura.
Implicazioni
L’elenco degli utenti di un computer può fornire un’istantanea dei potenziali punti di accesso per il personale non autorizzato. Nel contesto della sicurezza informatica, la comprensione di questi utenti e del loro stato è un passo fondamentale per garantire che solo le persone autorizzate abbiano accesso.
Raccomandazioni
- Aggiorna regolarmente PowerShell per avere accesso ai cmdlet più recenti.
- Esegui sempre gli script da fonti affidabili per garantire la sicurezza del sistema.
- Verifica regolarmente gli elenchi degli utenti per assicurarti che non siano stati aggiunti account non autorizzati.
Considerazioni finali
NinjaOne, con le sue solide soluzioni di gestione IT, integra strumenti come questo script PowerShell per elencare gli utenti locali. Quando i professionisti IT elencano gli utenti locali utilizzando il nostro script PowerShell, possono poi utilizzare la piattaforma completa di NinjaOne per gestire, monitorare e proteggere questi utenti, assicurando che l’infrastruttura IT rimanga ottimizzata e sicura.