{"id":208144,"date":"2023-11-29T14:34:26","date_gmt":"2023-11-29T14:34:26","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/usare-powershell-per-elencare-gli-utenti-locali-2\/"},"modified":"2024-03-07T15:52:31","modified_gmt":"2024-03-07T15:52:31","slug":"usare-powershell-per-elencare-gli-utenti-locali-2","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/usare-powershell-per-elencare-gli-utenti-locali-2\/","title":{"rendered":"Utilizzare PowerShell per elencare gli utenti locali sui sistemi Windows"},"content":{"rendered":"<p>PowerShell \u00e8 uno strumento potente nell&#8217;arsenale dei professionisti IT, spesso sfruttato per la sua capacit\u00e0 di automatizzare le attivit\u00e0 ed estrarre i dati con facilit\u00e0. Un&#8217;attivit\u00e0 critica che i <a href=\"https:\/\/www.ninjaone.com\/it\/cos-e-un-msp\/\">Managed Service Provider (MSP)<\/a> e gli amministratori di sistema si trovano ad affrontare di frequente \u00e8 quella di elencare gli utenti di un sistema informatico. Oggi analizzeremo uno script PowerShell progettato appositamente per questo scopo: <strong>elencare gli utenti locali.\u00a0<\/strong><\/p>\n<h2>Background<\/h2>\n<p>\u00c8 innegabile che nell&#8217;ambiente IT di oggi, caratterizzato da ritmi frenetici, la capacit\u00e0 di estrarre rapidamente i dati sugli utenti di un sistema sia preziosa. Ci\u00f2 \u00e8 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\u2019esigenza di elencare gli utenti locali su un computer Windows, consentendo ai professionisti di ottenere rapidamente informazioni.<\/p>\n<h2>Lo script per elencare gli utenti locali<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 2.0\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Lists local computers' users.\r\n.DESCRIPTION\r\n    Lists local computers' users. By default it lists only the enabled users.\r\n.EXAMPLE\r\n    No parameters needed.\r\n    Lists enabled users on the local computer.\r\n.EXAMPLE\r\n     -AllUsers\r\n    Lists enabled and disabled users on the local computer.\r\n.EXAMPLE\r\n    PS C:&gt; List-Users.ps1 -AllUsers\r\n    Lists enabled and disabled users on the local computer.\r\n.OUTPUTS\r\n    System.Management.Automation.SecurityAccountsManager.LocalUser[]\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 7, Windows Server 2012\r\n    Release Notes:\r\n    Initial Release\r\n.COMPONENT\r\n    ManageUsers\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    # Will return disabled users as well as enabled users\r\n    [Switch]\r\n    $AllUsers\r\n)\r\n\r\nbegin {\r\n    Write-Output \"Starting List Users\"\r\n}\r\n\r\nprocess {\r\n    # If we are running powershell under a 32bit OS or running a 32bit version of powershell\r\n    # or we don't have access to Get-LocalUser\r\n    if (\r\n        [Environment]::Is64BitProcess -ne [Environment]::Is64BitOperatingSystem -or\r\n            (Get-Command -Name \"Get-LocalUser\" -ErrorAction SilentlyContinue).Count -eq 0\r\n    ) {\r\n        # Get users from net.exe user\r\n        $Data = $(net.exe user) | Select-Object -Skip 4\r\n        # Check if the command ran the way we wanted and the exit code is 0\r\n        if ($($Data | Select-Object -last 2 | Select-Object -First 1) -like \"*The command completed successfully.*\" -and $LASTEXITCODE -eq 0) {\r\n            # Process the output and get only the users\r\n            $Users = $Data[0..($Data.Count - 3)] -split 's+' | Where-Object { -not $([String]::IsNullOrEmpty($_) -or [String]::IsNullOrWhiteSpace($_)) }\r\n            # Loop through each user\r\n            $Users | ForEach-Object {\r\n                # Get the Account active property look for a Yes\r\n                $Enabled = $(net.exe user $_) | Where-Object {\r\n                    $_ -like \"Account active*\" -and\r\n                    $($_ -split 's+' | Select-Object -Last 1) -like \"Yes\"\r\n                }\r\n                # Output Name and Enabled almost like how Get-LocalUser displays it's data\r\n                [PSCustomObject]@{\r\n                    Name    = $_\r\n                    Enabled = if ($Enabled -like \"*Yes*\") { $true }else { $false }\r\n                }\r\n            } | Where-Object { if ($AllUsers) { $_.Enabled }else { $true } }\r\n        }\r\n        else {\r\n            exit 1\r\n        }\r\n    }\r\n    else {\r\n        try {\r\n            if ($AllUsers) {\r\n                Get-LocalUser\r\n            }\r\n            else {\r\n                Get-LocalUser | Where-Object { $_.Enabled -eq $true }\r\n            }\r\n        }\r\n        catch {\r\n            Write-Error $_\r\n            exit 1\r\n        }\r\n    }\r\n}\r\n\r\nend {\r\n    Write-Output \"Completed List Users\"\r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p style=\"text-align: center;\">Accedi a oltre 700 script nel Dojo di NinjaOne<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.ninjaone.com\/it\/prova-gratuita\/\">Ottieni l&#8217;accesso<\/a><\/p>\n<\/div>\n<h2>Analisi dettagliata<\/h2>\n<p>Lo script per elencare gli utenti locali \u00e8 piuttosto semplice. Inizia definendo un parametro, <strong>$AllUsers<\/strong>, che quando viene utilizzato, include nel suo output sia gli utenti abilitati che quelli disabilitati.\u00a0Nel blocco &#8220;processo&#8221;, lo script per elencare gli utenti locali verifica innanzitutto l&#8217;architettura del sistema e la disponibilit\u00e0 del cmdlet <strong>Get-LocalUser<\/strong>. Se c&#8217;\u00e8 una mancata corrispondenza o il cmdlet non \u00e8 disponibile, lo script per elencare gli utenti locali torna a usare il comando legacy <strong>net.exe user<\/strong>.\u00a0I dati ricavati da entrambi i metodi vengono quindi elaborati per elencare gli utenti. Quando si utilizza il comando <strong>net.exe user<\/strong>, lo script per elencare gli utenti locali recupera lo stato degli utenti, controllando se ogni account \u00e8 attivo. Quindi fornisce questi dati in modo strutturato.\u00a0Negli scenari in cui <strong>Get-LocalUser<\/strong> \u00e8 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 <strong>$AllUsers<\/strong>.<\/p>\n<h2>Casi d&#8217;uso potenziali<\/h2>\n<p>Immagina una professionista dell&#8217;IT, Jane, che sta distribuendo un nuovo aggiornamento del software in tutta la sua azienda. Prima di distribuire l&#8217;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.<\/p>\n<h2>Confronti<\/h2>\n<p>Lo script per elencare gli utenti locali utilizza il cmdlet <strong>Get-LocalUser<\/strong> quando \u00e8 possibile, e l&#8217;approccio alternativo che utilizza <strong>net.exe user<\/strong> \u00e8 un modo per permettere allo script di funzionare su sistemi legacy. Altri script potrebbero affidarsi esclusivamente a cmdlet o metodi pi\u00f9 recenti. Il doppio approccio dello script per elencare gli utenti locali garantisce la compatibilit\u00e0 con un&#8217;ampia gamma di sistemi Windows, rendendolo versatile in diversi ambienti.<\/p>\n<h2>Domande frequenti<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Lo script per elencare gli utenti locali pu\u00f2 essere utilizzato su qualsiasi macchina Windows?<\/strong><br \/>\n\u00c8 progettato per Windows 7, Windows Server 2012 e versioni successive.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Cosa succede se Get-LocalUser non \u00e8 disponibile sul mio sistema?<\/strong><br \/>\nLo script per elencare gli utenti locali ricorre automaticamente al comando <strong>net.exe user<\/strong> se <strong>Get-LocalUser<\/strong> non \u00e8 disponibile o se c&#8217;\u00e8 una mancata corrispondenza in termini di architettura.<\/li>\n<\/ul>\n<h2>Implicazioni<\/h2>\n<p>L&#8217;elenco degli utenti di un computer pu\u00f2 fornire un&#8217;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 \u00e8 un passo fondamentale per garantire che solo le persone autorizzate abbiano accesso.<\/p>\n<h2>Raccomandazioni<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">Aggiorna regolarmente PowerShell per avere accesso ai cmdlet pi\u00f9 recenti.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Esegui sempre gli script da fonti affidabili per garantire la sicurezza del sistema.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Verifica regolarmente gli elenchi degli utenti per assicurarti che non siano stati aggiunti account non autorizzati.<\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p>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 <a href=\"https:\/\/www.ninjaone.com\/it\/\">la piattaforma completa di NinjaOne<\/a> per gestire, monitorare e proteggere questi utenti, assicurando che l&#8217;<a href=\"https:\/\/www.ninjaone.com\/it\/gestione-impresa\/infrastruttura\">infrastruttura IT<\/a> rimanga ottimizzata e sicura.<\/p>\n","protected":false},"author":35,"featured_media":144245,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4277],"class_list":["post-208144","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub\/208144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/comments?post=208144"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media\/144245"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=208144"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=208144"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=208144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}