Guarda una demo×
×

Guarda NinjaOne in azione!

Utilizzare PowerShell per elencare gli utenti locali sui sistemi Windows

Elencare gli utenti locali usando PowerShell

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

Ottieni l’accesso

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.

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.

Ti potrebbe interessare anche

Vuoi diventare un Ninja dell’IT?

Scopri come NinjaOne può aiutarti a semplificare le operazioni IT.

NinjaOne Terms & Conditions

By clicking the “I Accept” button below, you indicate your acceptance of the following legal terms as well as our 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 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).