{"id":208117,"date":"2023-09-26T10:15:53","date_gmt":"2023-09-26T10:15:53","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/trovare-i-tentativi-di-login-non-riusciti-windows-powershell-2\/"},"modified":"2025-06-10T15:17:12","modified_gmt":"2025-06-10T15:17:12","slug":"trovare-i-tentativi-di-login-non-riusciti-windows-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/trovare-i-tentativi-di-login-non-riusciti-windows-powershell\/","title":{"rendered":"Come trovare i tentativi di login non riusciti in Windows usando PowerShell"},"content":{"rendered":"<p><span class=\"TextRun SCXW195284040 BCX0\" lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW195284040 BCX0\">Garantire la sicurezza dei sistemi informatici \u00e8 un\u2019attivit\u00e0 cruciale. <\/span><span class=\"NormalTextRun SCXW195284040 BCX0\">Identificare<\/span><span class=\"NormalTextRun SCXW195284040 BCX0\"> attivit\u00e0 sospette, come ad esempio <\/span><span class=\"NormalTextRun SCXW195284040 BCX0\">numerosi <\/span>tentativi di login non riusciti<span class=\"NormalTextRun SCXW195284040 BCX0\">, \u00e8 una misura importante per ridurre i rischi delle potenziali minacce. Lo script fornito, scritto in PowerShell, \u00e8 uno strumento versatile per <\/span><span class=\"NormalTextRun SCXW195284040 BCX0\">aiutare<\/span><span class=\"NormalTextRun SCXW195284040 BCX0\"> i professionisti IT e gli MSP a <strong>ottenere informazioni sui tentativi di login non riusciti<\/strong>.<\/span><\/span><\/p>\n<h2>Background<\/h2>\n<p><span class=\"NormalTextRun SCXW91424532 BCX0\">Tenere traccia dei <\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">tentativi di<\/span><span class=\"NormalTextRun SCXW91424532 BCX0\"> login non riusciti <\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">su un sistema pu\u00f2<\/span><span class=\"NormalTextRun SCXW91424532 BCX0\"> fornire informazioni cruciali per gli amministratori IT. Questi tentativi di login non riusciti possono fornire informazioni su <\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">possibili<\/span><span class=\"NormalTextRun SCXW91424532 BCX0\"> violazioni <\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">della sicurezza<\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">, <\/span><span class=\"NormalTextRun SCXW91424532 BCX0\">aiutare a monitorare<\/span><span class=\"NormalTextRun SCXW91424532 BCX0\"> i comportamenti degli utenti e a mantenere l&#8217;integrit\u00e0 del sistema. Lo script PowerShell fornito recupera in modo efficiente i dati relativi ai tentativi di login non riusciti, offrendo una soluzione solida per i professionisti. L&#8217;importanza di questo strumento non sar\u00e0 mai sottolineata abbastanza. Con l&#8217;aumento delle minacce alla sicurezza informatica, disporre di un metodo efficiente per rilevare le anomalie nei login degli utenti diventa essenziale per gli MSP e i professionisti IT.<\/span><\/p>\n<h2>Lo script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 3.0 -RunAsAdministrator\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Returns the number of recent failed login attempts.\r\n.DESCRIPTION\r\n    Returns the number of recent failed login attempts of all users or of a specific user. If a user is specified then just a number is returned.\r\n.EXAMPLE\r\n    No parameters needed.\r\n    Returns all users, of the local machine, with a could of failed login attempts.\r\nOutput Example:\r\nUserName  FailedLoginAttempts\r\n--------  -------------------\r\nFred                        4\r\nBob                         0\r\n.EXAMPLE\r\n     -UserName \"Fred\"\r\n    Returns the number of failed login attempts of the user Fred on the local machine.\r\nOutput Example:\r\n4\r\n.EXAMPLE\r\n     -ComputerName \"FredPC\" -UserName \"Fred\"\r\n    Returns the number of failed login attempts of the user Fred on the computer named FredPC.\r\nOutput Example:\r\n4\r\n.EXAMPLE\r\n     -ComputerName \"FredPC\" -UserName \"Fred\" -Detailed\r\n    Returns the number of failed login attempts of the user Fred on the computer named FredPC, but will more details of each failed and successful logins.\r\nOutput Example:\r\n\r\nTimeGenerated   : 10\/18\/2019 7:52:43 AM\r\nEventID         : 4624\r\nCategory        : 12544\r\nADUsername      : Fred\r\nDomain          : FredPC\r\nUserSID         : S-1-0-0\r\nWorkstation     : -\r\nSourceIP        : -\r\nPort            : -\r\nFailureReason   : Interactive\r\nFailureStatus   : Incorrect password\r\nFailureSubStatus: Other\r\n.EXAMPLE\r\n    PS C:&gt; Monitor-Failed-Password-Attempts.ps1 -ComputerName \"FredPC\" -UserName \"Fred\"\r\n    Returns the number of failed login attempts of the user Fred on the computer named FredPC.\r\nOutput Example:\r\n4\r\n.OUTPUTS\r\n    System.Int32 Number of failed login attempts.\r\n.OUTPUTS\r\n    PSCustomObject List of user names and a count of failed login attempts.\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 7, Windows Server 2012\r\n    If ComputerName is specified, then be sure that the computer that this script is running on has network and permissions to access the Event Log on the remote computer.\r\n    Release Notes:\r\n    Initial Release\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n    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. \r\n    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. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, 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. \r\n    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. \r\n    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. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n.COMPONENT\r\n    ManageUsers\r\n#&gt;\r\n\r\nparam (\r\n    # The name of a remote computer to get event logs for failed logins\r\n    [Parameter(Mandatory = $false)]\r\n    [String]\r\n    $ComputerName = [System.Net.Dns]::GetHostName(),\r\n    # A username\r\n    [Parameter(Mandatory = $false)]\r\n    [String]\r\n    $UserName,\r\n    # Returns all relevant events, sorted by TimeGenerated\r\n    [Switch]\r\n    $Detailed\r\n)\r\n\r\n# Support functions\r\n# Returns the matching FailureReason like Incorrect password\r\nfunction Get-FailureReason {\r\n    Param($FailureReason)\r\n    switch ($FailureReason) {\r\n        '0xC0000064' { \"Account does not exist\"; break; }\r\n        '0xC000006A' { \"Incorrect password\"; break; }\r\n        '0xC000006D' { \"Incorrect username or password\"; break; }\r\n        '0xC000006E' { \"Account restriction\"; break; }\r\n        '0xC000006F' { \"Invalid logon hours\"; break; }\r\n        '0xC000015B' { \"Logon type not granted\"; break; }\r\n        '0xc0000070' { \"Invalid Workstation\"; break; }\r\n        '0xC0000071' { \"Password expired\"; break; }\r\n        '0xC0000072' { \"Account disabled\"; break; }\r\n        '0xC0000133' { \"Time difference at DC\"; break; }\r\n        '0xC0000193' { \"Account expired\"; break; }\r\n        '0xC0000224' { \"Password must change\"; break; }\r\n        '0xC0000234' { \"Account locked out\"; break; }\r\n        '0x0' { \"0x0\"; break; }\r\n        default { \"Other\"; break; }\r\n    }\r\n}\r\nfunction Get-LogonType {\r\n    Param($LogonType)\r\n    switch ($LogonType) {\r\n        '0' { 'Interactive'; break; }\r\n        '2' { 'Interactive'; break; }\r\n        '3' { 'Network'; break; }\r\n        '4' { 'Batch'; break; }\r\n        '5' { 'Service'; break; }\r\n        '6' { 'Proxy'; break; }\r\n        '7' { 'Unlock'; break; }\r\n        '8' { 'Networkcleartext'; break; }\r\n        '9' { 'NewCredentials'; break; }\r\n        '10' { 'RemoteInteractive'; break; }\r\n        '11' { 'CachedInteractive'; break; }\r\n        '12' { 'CachedRemoteInteractive'; break; }\r\n        '13' { 'CachedUnlock'; break; }\r\n        Default {}\r\n    }\r\n}\r\n#-Newest $Records\r\n$Events = Get-EventLog -ComputerName $ComputerName -LogName 'security' -InstanceId 4625, 4624 | Sort-Object -Property TimeGenerated | ForEach-Object {\r\n    if ($_.InstanceId -eq 4625) {\r\n        $_ | Select-Object -Property @(\r\n            @{Label = 'TimeGenerated'; Expression = { $_.TimeGenerated } },\r\n            @{Label = 'EventID'; Expression = { $_.InstanceId } },\r\n            @{Label = 'Category'; Expression = { $_.CategoryNumber } },\r\n            @{Label = 'Username'; Expression = { $_.ReplacementStrings[5] } },\r\n            @{Label = 'Domain'; Expression = { $_.ReplacementStrings[6] } },\r\n            @{Label = 'UserSID'; Expression = { (($_.Message -Split 'rn' | Select-String 'Security ID')[1] -Split 's+')[3] } },\r\n            # @{Label = 'UserSID'; Expression = { $_.ReplacementStrings[0] } },\r\n            @{Label = 'Workstation'; Expression = { $_.ReplacementStrings[13] } },\r\n            @{Label = 'SourceIP'; Expression = { $_.ReplacementStrings[19] } },\r\n            @{Label = 'Port'; Expression = { $_.ReplacementStrings[20] } },\r\n            @{Label = 'LogonType'; Expression = { $_.ReplacementStrings[8] } },\r\n            @{Label = 'FailureStatus'; Expression = { Get-FailureReason($_.ReplacementStrings[7]) } },\r\n            @{Label = 'FailureSubStatus'; Expression = { Get-FailureReason($_.ReplacementStrings[9]) } }\r\n        )\r\n    }\r\n    elseif ($_.InstanceId -eq 4624 -and (Get-LogonType($_.ReplacementStrings[8])) -notlike 'Service') {\r\n        $_ | Select-Object -Property @(\r\n            @{Label = 'TimeGenerated'; Expression = { $_.TimeGenerated } },\r\n            @{Label = 'EventID'; Expression = { $_.InstanceId } },\r\n            @{Label = 'Category'; Expression = { $_.CategoryNumber } },\r\n            @{Label = 'Username'; Expression = { $_.ReplacementStrings[5] } },\r\n            @{Label = 'Domain'; Expression = { $_.ReplacementStrings[6] } },\r\n            @{Label = 'UserSID'; Expression = { $_.ReplacementStrings[0] } },\r\n            @{Label = 'Workstation'; Expression = { $_.ReplacementStrings[11] } },\r\n            @{Label = 'SourceIP'; Expression = { $_.ReplacementStrings[18] } },\r\n            @{Label = 'Port'; Expression = { $_.ReplacementStrings[19] } },\r\n            @{Label = 'LogonType'; Expression = { Get-LogonType($_.ReplacementStrings[8]) } },\r\n            @{Label = 'LogonID'; Expression = { Get-FailureReason($_.ReplacementStrings[7]) } },\r\n            @{Label = 'LogonProcess'; Expression = { Get-FailureReason($_.ReplacementStrings[9]) } }\r\n        )\r\n    }\r\n}\r\n\r\nif ($Detailed) {\r\n    if ($UserName) {\r\n        $Events | Where-Object {\r\n            $_.Username -like $UserName\r\n        }\r\n    }\r\n    else {\r\n        $Events | Where-Object {\r\n            $_.Username -notlike \"DWM*\" -and\r\n            $_.Username -notlike \"UMFD*\" -and\r\n            $_.Username -notlike \"SYSTEM\"\r\n        }\r\n    }\r\n}\r\nelse {\r\n    $UserNames = if ($UserName) {\r\n        ($Events | Select-Object -Property Username -Unique).Username | Where-Object {\r\n            $_ -like \"$UserName\"\r\n        }\r\n    }\r\n    else {\r\n        ($Events | Select-Object -Property Username -Unique).Username | Where-Object {\r\n            $_ -notlike \"DWM*\" -and\r\n            $_ -notlike \"UMFD*\" -and\r\n            $_ -notlike \"SYSTEM\"\r\n        }\r\n    }\r\n    \r\n    $UserNames | ForEach-Object {\r\n        $CurrentUserName = $_\r\n        $FailedLoginCount = 0\r\n        for ($i = 0; $i -lt $Events.Count; $i++) {\r\n            if ($Events[$i].EventID -eq 4625 -and $Events[$i].Username -like $CurrentUserName) {\r\n                # User failed to login X times\r\n                # Count the number of failed logins\r\n                $FailedLoginCount++\r\n            }\r\n            elseif ($Events[$i].EventID -eq 4624 -and $Events[$i].Username -like $CurrentUserName) {\r\n                # User logged in successfully\r\n                # Reset the number of failed logins to 0\r\n                $FailedLoginCount = 0\r\n            }\r\n        }\r\n        if ($UserName) {\r\n            # If a UserName was specified, then return only the failed login count\r\n            $FailedLoginCount\r\n        }\r\n        else {\r\n            # If no UserName was specified, then return the user name and failed login count\r\n            [PSCustomObject]@{\r\n                UserName            = $CurrentUserName\r\n                FailedLoginAttempts = $FailedLoginCount\r\n            }\r\n        }\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Accedi a oltre 300 script nel Dojo di NinjaOne<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/it\/prova-gratuita\/\">Ottieni l&#8217;accesso<\/a><\/p>\n<\/div>\n<h2>Descrizione dettagliata dello script per individuare i tentativi di login non riusciti<\/h2>\n<p><span data-contrast=\"none\">Nella sua funzione principale, lo script recupera i dati dai log degli eventi di un determinato computer, cercando specifici ID evento che rappresentano i tentativi di login non riusciti e finalizzati con successo.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li><b><span data-contrast=\"none\">Parametri<\/span><\/b><span data-contrast=\"none\">: Lo script per individuare i tentativi di login non riusciti inizia definendo parametri come <\/span><b><span data-contrast=\"none\">ComputerName<\/span><\/b><span data-contrast=\"none\">, <\/span><b><span data-contrast=\"none\">UserName<\/span><\/b><span data-contrast=\"none\"> e <\/span><b><span data-contrast=\"none\">Detailed<\/span><\/b><span data-contrast=\"none\">. Consente all&#8217;utente di specificare il computer, l&#8217;utente e il livello di dettaglio dei tentativi di accesso.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"none\">Funzioni<\/span><\/b><span data-contrast=\"none\">: Due funzioni, <\/span><b><span data-contrast=\"none\">Get-FailureReason<\/span><\/b><span data-contrast=\"none\"> e <\/span><b><span data-contrast=\"none\">Get-LogonType<\/span><\/b><span data-contrast=\"none\"> traducono le informazioni codificate dei log degli eventi in dati leggibili relativi al tipo di login e al motivo di un login fallito.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"none\">Recupero degli eventi<\/span><\/b><span data-contrast=\"none\">: Lo script recupera quindi i log degli eventi, filtrandoli per conservare solo le informazioni necessarie. Si tratta di selezionare le istanze con gli ID evento rilevanti.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><b><span data-contrast=\"none\">Elaborazione<\/span><\/b><span data-contrast=\"none\">: Se vengono richiesti dati dettagliati, lo script fornisce un&#8217;analisi completa di ogni tentativo di accesso, altrimenti viene visualizzato un riepilogo dei tentativi di login non riusciti per ogni utente.<\/span><\/li>\n<\/ul>\n<h2>Situazioni d&#8217;uso potenziali<\/h2>\n<p><span class=\"TextRun SCXW128649258 BCX0\" lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW128649258 BCX0\">Immagina un amministratore IT di un&#8217;azienda di medie dimensioni. Di recente, il reparto IT ha notato un incremento del numero di tentativi di login falliti, soprattutto durante le ore non lavorative. Utilizzando lo script, l&#8217;amministratore pu\u00f2 verificare rapidamente quali utenti hanno prodotto <\/span><span class=\"NormalTextRun SCXW128649258 BCX0\">tentativi di login<\/span><span class=\"NormalTextRun SCXW128649258 BCX0\"> non riusciti e con quale frequenza. Nel riscontrare che un singolo account utente ha avuto pi\u00f9 tentativi di login non riusciti in un <\/span><span class=\"NormalTextRun SCXW128649258 BCX0\">breve intervallo di tempo<\/span>, l\u2019amministratore<span class=\"NormalTextRun SCXW128649258 BCX0\"> pu\u00f2 concludere che questo account potrebbe essere stato preso di mira. In questo modo, lo script favorisce il rilevamento precoce di un possibile problema e una pronta risoluzione.<\/span><\/span><\/p>\n<h2>Approccio alternativo<\/h2>\n<p><span class=\"TextRun SCXW94807451 BCX0\" lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun CommentStart CommentHighlightPipeRest CommentHighlightRest SCXW94807451 BCX0\">Esistono diversi metodi per tenere traccia dei tentativi di login non riusciti. L&#8217;auditing di sicurezza integrato di Windows, per esempio, consente di visualizzare i log di sicurezza tramite il Visualizzatore eventi. Sebbene questo approccio sia semplice, pu\u00f2 richiedere molto tempo. Il nostro script PowerShell semplifica il processo, offrendo una soluzione pi\u00f9 efficiente e personalizzabile per individuare i tentativi di login non riusciti.<\/span><\/span><\/p>\n<h2>Domande frequenti<\/h2>\n<ul style=\"font-weight: 400;\">\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;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Come fa lo script a identificare i tentativi di login non riusciti?<\/span><br \/>\n<span data-contrast=\"none\">Lo script cerca gli ID evento specifici nel log eventi, ad esempio 4625 per i tentativi di login non riusciti.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/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;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"none\">\u00c8 possibile recuperare i dati da un computer remoto?<\/span><br \/>\n<span data-contrast=\"none\">S\u00ec, fornendo il parametro <\/span><b><span data-contrast=\"none\">ComputerName<\/span><\/b><span data-contrast=\"none\"> \u00e8 possibile ottenere dati da un computer remoto.<\/span><\/li>\n<\/ul>\n<h2>Implicazioni<\/h2>\n<p><span class=\"TextRun SCXW144041545 BCX0\" lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW144041545 BCX0\">Individuando il numero di tentativi di login non riusciti, gli amministratori IT possono prevenire potenziali violazioni della sicurezza. Le anomalie nei modelli di login sono spesso un primo segnale di attivit\u00e0 dannose. Pertanto, agendo su questi dati, i professionisti possono rendere i loro sistemi pi\u00f9 sicuri contro le potenziali minacce.<\/span><\/span><\/p>\n<h2>Suggerimenti<\/h2>\n<ul>\n<li><span data-contrast=\"none\">Assicurati di disporre delle autorizzazioni necessarie per recuperare i log degli eventi.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Esegui lo script per individuare i tentativi di login non riusciti con regolarit\u00e0, soprattutto per i sistemi che contengono informazioni sensibili.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"none\">Esamina eventuali pattern di accessi non riusciti e informa gli utenti interessati.<\/span><\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p><span class=\"TextRun SCXW239265416 BCX0\" lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW239265416 BCX0\">Nell&#8217;era delle crescenti minacce informatiche, strumenti come il nostro script PowerShell per individuare i tentativi di login non riusciti sono essenziali. Per una soluzione di sicurezza completa, \u00e8 possibile implementare piattaforme come <\/span><span class=\"NormalTextRun SCXW239265416 BCX0\">NinjaOne<\/span><span class=\"NormalTextRun SCXW239265416 BCX0\">, che garantiscono il <a href=\"https:\/\/www.ninjaone.com\/it\/gestione-endpoint\/monitoraggio-e-avvisi\/\">monitoraggio e la gestione in tempo reale<\/a>. <\/span><span class=\"NormalTextRun SCXW239265416 BCX0\">NinjaOne<\/span><span class=\"NormalTextRun SCXW239265416 BCX0\"> in combinazione con script proattivi come quello di cui abbiamo parlato, <\/span><span class=\"NormalTextRun SCXW239265416 BCX0\">permette di ottenere un livello<\/span><span class=\"NormalTextRun SCXW239265416 BCX0\"> ulteriore di difesa contro le minacce informatiche.<\/span><\/span><span class=\"EOP SCXW239265416 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"author":35,"featured_media":207202,"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-208117","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\/208117","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=208117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media\/207202"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=208117"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=208117"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=208117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}