{"id":208167,"date":"2023-12-13T09:52:23","date_gmt":"2023-12-13T09:52:23","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/tracciare-la-posizione-di-un-dispositivo-con-powershell\/"},"modified":"2024-03-04T18:26:42","modified_gmt":"2024-03-04T18:26:42","slug":"tracciare-la-posizione-di-un-dispositivo-con-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/tracciare-la-posizione-di-un-dispositivo-con-powershell\/","title":{"rendered":"Utilizzare PowerShell per tracciare la posizione di un dispositivo tramite l&#8217;API GeoLocation di Google"},"content":{"rendered":"<h2>Punti chiave<\/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\">Lo script traccia la posizione geografica di un dispositivo utilizzando l&#8217;API GeoLocation di Google.<\/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\">\u00c8 stato progettato per aggiornare i campi personalizzati di NinjaOne con i dati relativi alla posizione.<\/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\">Lo script per tracciare la posizione di un dispositivo richiede una connessione Internet attiva ed \u00e8 ottimizzato per i dispositivi Windows 10.<\/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=\"4\" data-aria-level=\"1\">L\u2019API GeoLocation di Google offre una maggiore precisione e una copertura pi\u00f9 ampia rispetto ad altri metodi.<\/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=\"5\" data-aria-level=\"1\">L&#8217;uso dello script per tracciare la posizione di un dispositivo solleva problemi etici e di privacy.<\/li>\n<li>Per evitare violazioni della privacy, \u00e8 necessario ottenere autorizzazioni esplicite prima di utilizzare questo strumento.<\/li>\n<li>La comprensione dei limiti legati alle ricerche effettuabili per intervallo di tempo, e dei costi associati, quando si usa l\u2019API di Google \u00e8 fondamentale.<\/li>\n<li>NinjaOne, in combinazione con script come questo, offre solide funzionalit\u00e0 per le operazioni IT e la gestione delle risorse.<\/li>\n<\/ul>\n<p>Nell&#8217;odierno ecosistema informatico interconnesso, una delle informazioni pi\u00f9 preziose \u00e8 la &#8220;posizione&#8221;. La capacit\u00e0 di tracciare la posizione geografica dei dispositivi pu\u00f2 rivelarsi cruciale in molte operazioni IT, dalla gestione delle risorse al monitoraggio della sicurezza. Questo post del blog analizza uno script PowerShell che consente ai professionisti IT e agli MSP (Managed Service Provider) di <strong>tracciare\u00a0la posizione di un dispositivo Windows<\/strong> e di memorizzarla utilizzando i campi personalizzati di NinjaOne.<\/p>\n<h2>Background<\/h2>\n<p>Lo script per tracciare\u00a0la posizione di un dispositivo in questione aggiorna i campi personalizzati con le coordinate geografiche e l&#8217;indirizzo di un dispositivo, utilizzando l&#8217;<a href=\"https:\/\/developers.google.com\/maps\/documentation\/geolocation\/overview\" target=\"_blank\" rel=\"noopener\">API GeoLocation di Google<\/a>. Per i professionisti IT e gli MSP, conoscere la posizione fisica di un dispositivo \u00e8 fondamentale. Che si tratti di tracciare apparecchiature rubate, di controllare i dispositivi o di verificare la distribuzione geografica delle risorse IT, le applicazioni di questo script per tracciare la posizione di un dispositivo possono essere varie e profonde.<\/p>\n<h2>Lo script per tracciare la posizione di un dispositivo<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Updates Custom Fields with the location of a device based on the Google GeoLocation API.\r\n.DESCRIPTION\r\n    Updates Custom Fields with the location of a device based on the Google GeoLocation API.\r\n\r\n    The CustomFieldName parameter can be used to specify which custom field to save the Latitude and Longitude coordinates to.\r\n    The AddressCustomFieldName parameter can be used to specify which custom field to save the address to.\r\n\r\n    This script requires a custom field to save location data in NinjaRMM.\r\n    The default for CustomFieldName is \"Location\".\r\n    The default for AddressCustomFieldName is \"Address\".\r\n    You can use any text custom field that you wish.\r\n.EXAMPLE\r\n    -GoogleApiKey \"&lt;GeoLocation API key here&gt;\"\r\n    Saves the Latitude and Longitude coordinates to the custom field named Location.\r\n.EXAMPLE\r\n    -GoogleApiKey \"&lt;GeoLocation API key here&gt;\" -CustomFieldName \"Location\" -AddressCustomFieldName \"Address\"\r\n    Saves the Latitude and Longitude coordinates to the custom field named Location as well as the address to Address.\r\n.INPUTS\r\n    None\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10\r\n    Release Notes:\r\n    Updated to work with either Parameters or Script Variables\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#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter()]\r\n    [String]\r\n    $GoogleApiKey,\r\n    [Parameter()]\r\n    [String]\r\n    $CustomFieldName = \"Location\",\r\n    [Parameter()]\r\n    [String]\r\n    $AddressCustomFieldName = \"Address\"\r\n)\r\n\r\nbegin {\r\n    function Test-StringEmpty {\r\n        param([string]$Text)\r\n        # Returns true if string is empty, null, or whitespace\r\n        process { [string]::IsNullOrEmpty($Text) -or [string]::IsNullOrWhiteSpace($Text) }\r\n    }\r\n    function Get-NearestCity {\r\n        param (\r\n            [double]$lat,\r\n            [double]$lon,\r\n            [string]$GoogleApi\r\n        )\r\n        try {\r\n            $Response = Invoke-RestMethod -Uri \"http:\/\/maps.googleapis.com\/maps\/api\/geocode\/json?latlng=$lat,$lon&amp;key=$GoogleApi\"\r\n        }\r\n        catch {\r\n            throw $Error[0]\r\n        }\r\n        return $Response.results[0].formatted_address\r\n    }\r\n    function Get-WifiNetwork {\r\n        end {\r\n            try {\r\n                netsh.exe wlan sh net mode=bssid | ForEach-Object -Process {\r\n                    if ($_ -match '^SSID (d+) : (.*)$') {\r\n                        $current = @{}\r\n                        $networks += $current\r\n                        $current.Index = $matches[1].trim()\r\n                        $current.SSID = $matches[2].trim()\r\n                    }\r\n                    else {\r\n                        if ($_ -match '^s+(.*)s+:s+(.*)s*$') {\r\n                            $current[$matches[1].trim()] = $matches[2].trim()\r\n                        }\r\n                    }\r\n                } -Begin { $networks = @() } -End { $networks | ForEach-Object { New-Object -TypeName \"PSObject\" -Property $_ } }    \r\n            }\r\n            catch {\r\n                # return nothing\r\n            }\r\n        }\r\n    }\r\n\r\n    # Check if Script Variables are being used\r\n    if (-not $(Test-StringEmpty -Text $env:GoogleApiKey)) {\r\n        $GoogleApiKey = $env:GoogleApiKey\r\n    }\r\n    if (-not $(Test-StringEmpty -Text $env:CustomFieldName)) {\r\n        $CustomFieldName = $env:CustomFieldName\r\n    }\r\n    if (-not $(Test-StringEmpty -Text $env:AddressCustomFieldName)) {\r\n        $AddressCustomFieldName = $env:AddressCustomFieldName\r\n    }\r\n    # Check if api key is set, error if not set\r\n    if ($(Test-StringEmpty -Text $GoogleApiKey)) {\r\n        # Both Parameter and Script Variable are empty\r\n        # Can not combine Parameter \"[Parameter(Mandatory)]\" and Script Variable Required\r\n        Write-Error \"GoogleApiKey is required.\"\r\n        exit 1\r\n    }\r\n\r\n    # Use the system's new line\r\n    $NewLine = $([System.Environment]::NewLine)\r\n\r\n    # Build URL with API key\r\n    $Url = \"https:\/\/www.googleapis.com\/geolocation\/v1\/geolocate?key=$GoogleApiKey\"\r\n}\r\nprocess {\r\n    # Get WIFI network data nearby\r\n    $WiFiData = Get-WifiNetwork |\r\n        Select-Object @{name = 'age'; expression = { 0 } },\r\n        @{name = 'macAddress'; expression = { $_.'BSSID 1' } },\r\n        @{name = 'channel'; expression = { $_.Channel } },\r\n        @{name = 'signalStrength'; expression = { (($_.Signal -replace \"%\") \/ 2) - 100 } }\r\n\r\n    # Check if we got any number access points\r\n    $Body = if ($WiFiData -and $WiFiData.Count -gt 0) {\r\n        @{\r\n            considerIp       = $true\r\n            wifiAccessPoints = $WiFiData\r\n        } | ConvertTo-Json\r\n    }\r\n    else {\r\n        @{\r\n            considerIp = $true\r\n        } | ConvertTo-Json\r\n    }\r\n\r\n    # Get our lat,lng position\r\n    try {\r\n        $Response = Invoke-RestMethod -Method Post -Uri $Url -Body $Body -ContentType \"application\/json\" -ErrorVariable Err\r\n    }\r\n    catch {\r\n        Write-Error $_\r\n        exit 1\r\n    }\r\n\r\n    # Save the relevant results to variable that have shorter names\r\n    $Lat = $Response.location.lat\r\n    $Lon = $Response.location.lng\r\n\r\n    try {\r\n        # Save Latitude, Longitude to the custom field from the CustomFieldName parameter\r\n        Ninja-Property-Set -Name $CustomFieldName -Value \"$Lat,$Lon\"\r\n    }\r\n    catch {\r\n        Write-Error \"Failed to save to CustomFieldName($CustomFieldName)\"\r\n        exit 1\r\n    }\r\n\r\n    if ( $(Test-StringEmpty -Text $AddressCustomFieldName) -and $(Test-StringEmpty -Text $env:AddressCustomFieldName)) {\r\n        # Both Parameter and Variable are empty\r\n        Write-Output \"$($NewLine)Location: $Lat,$Lon\"\r\n    }\r\n    else {\r\n        if ($(Test-StringEmpty -Text $AddressCustomFieldName)) {\r\n            # Parameter was not used\r\n            $AddressCustomFieldName = $env:AddressCustomFieldName\r\n        }\r\n\r\n        try {\r\n            # Get City from Google API's\r\n            # Google API: https:\/\/developers.google.com\/maps\/documentation\/geocoding\/requests-reverse-geocoding\r\n            $Address = Get-NearestCity -lat $Lat -lon $Lon -GoogleApi $GoogleApiKey\r\n        }\r\n        catch {\r\n            Write-Error \"Failed to save to get nearest city.\"\r\n            exit 1\r\n        }\r\n\r\n        try {\r\n            # Save Lat and Lon to custom field\r\n            Ninja-Property-Set -Name $AddressCustomFieldName -Value \"$Address\"\r\n            Write-Output \"$($NewLine)Location: $Address`: $Lat,$Lon\"\r\n        }\r\n        catch {\r\n            Write-Error \"Failed to save to AddressCustomFieldName($AddressCustomFieldName)\"\r\n            exit 1\r\n        }\r\n    }\r\n    exit 0\r\n}\r\nend {\r\n    $ScriptVariables = @(\r\n        [PSCustomObject]@{\r\n            name           = \"GoogleApiKey\"\r\n            calculatedName = \"GoogleApiKey\"\r\n            required       = $true\r\n            defaultValue   = $null\r\n            valueType      = \"TEXT\"\r\n            valueList      = $null\r\n            description    = \"\"\r\n        }\r\n        [PSCustomObject]@{\r\n            name           = \"CustomFieldName\"\r\n            calculatedName = \"CustomFieldName\"\r\n            required       = $false\r\n            defaultValue   = [PSCustomObject]@{\r\n                type  = \"TEXT\"\r\n                value = \"Location\"\r\n            }\r\n            valueType      = \"TEXT\"\r\n            valueList      = $null\r\n            description    = \"\"\r\n        }\r\n    )\r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Accedi a oltre 700 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>Analisi dettagliata<\/h2>\n<p>Lo script per tracciare la posizione di un dispositivo\u00a0pu\u00f2 essere suddiviso in tre parti principali:<\/p>\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>Inizializzazione<\/strong>: Lo script per tracciare la posizione di un dispositivo\u00a0inizia con la definizione di parametri quali GoogleApiKey, CustomFieldName e AddressCustomFieldName. Questi parametri fungono da input per personalizzare il comportamento dello script.<\/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\"><strong>Operazioni principali<\/strong>: La parte centrale dello script per tracciare la posizione di un dispositivo\u00a0prevede:<\/li>\n<li>Verifica delle reti WiFi disponibili intorno al dispositivo.<\/li>\n<li>Creazione di un payload con i dati WiFi e invio al servizio di geolocalizzazione di Google per ottenere latitudine e longitudine.<\/li>\n<li>Recupero della citt\u00e0 o dell&#8217;indirizzo pi\u00f9 vicino utilizzando le coordinate ottenute.<\/li>\n<li>Aggiornamento dei campi personalizzati in NinjaOne con i dati relativi alla localit\u00e0.<\/li>\n<li><strong>Operazioni conclusive<\/strong>: Le variabili degli script per tracciare la posizione di un dispositivo\u00a0vengono inizializzate per memorizzare i dati e aiutare nelle operazioni successive.<\/li>\n<\/ul>\n<h2>Casi d&#8217;uso potenziali<\/h2>\n<p>Consideriamo un professionista IT, Alex, che lavora per un&#8217;azienda. \u00c8 stato incaricato di controllare tutti i computer portatili in diverse filiali. Utilizzando questo script, Alex pu\u00f2 recuperare rapidamente la posizione geografica di ciascun portatile, assicurandosi che i dispositivi si trovino effettivamente nelle sedi dichiarate.<\/p>\n<h2>Confronti<\/h2>\n<p>L&#8217;approccio dello script per tracciare la posizione di un dispositivo\u00a0sfrutta l&#8217;API di Google GeoLocation, che offre dettagli precisi sulla posizione. Le alternative potrebbero essere l&#8217;utilizzo dei servizi di localizzazione nativi di Windows o di altre API di terze parti. Tuttavia, la quantit\u00e0 dei dati a disposizione e la solida infrastruttura di Google ne fanno una scelta privilegiata per questi campi di applicazione, perch\u00e9 garantiscono una migliore precisione e una copertura pi\u00f9 ampia.<\/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>Questo script per tracciare la posizione di un dispositivo\u00a0funziona anche offline?<\/strong><br \/>\nLo script per tracciare la posizione di un dispositivo\u00a0richiede una connessione Internet attiva per comunicare con i servizi di Google.<\/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\"><strong>C&#8217;\u00e8 un limite al numero di richieste di localizzazione?<\/strong><br \/>\nL&#8217;API GeoLocation di Google prevede dei limiti in base al tipo di account e alla tipologia di fatturazione scelta.<\/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\"><strong>Lo script per tracciare la posizione di un dispositivo funziona solo su Windows 10?<\/strong><br \/>\nIl requisito minimo per il sistema operativo dello script \u00e8 Windows 10.<\/li>\n<\/ul>\n<h2>Implicazioni<\/h2>\n<p>Se da un lato la possibilit\u00e0 di tracciare la posizione di un dispositivo rappresenta un ottimo strumento per la gestione delle risorse e la sicurezza, dall&#8217;altro pone problemi di privacy. \u00c8 fondamentale che i team IT si assicurino che questo strumento sia utilizzato in modo etico, con le dovute autorizzazioni e informando le persone coinvolte. Il tracciamento non autorizzato pu\u00f2 portare a violazioni delle leggi e delle normative sulla privacy.<\/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\">Fai in modo di avere sempre un&#8217;autorizzazione esplicita prima di eseguire questo script per tracciare la posizione di un dispositivo.<\/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\">Assicurati di aver compreso i limiti legati al numero di ricerche per intervallo temporale, e i costi associati, quando usi l&#8217;API GeoLocation di Google.<\/li>\n<li>Esamina e verifica regolarmente i log per evitare qualsiasi utilizzo scorretto.<\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p>Per gli MSP e i professionisti IT, NinjaOne offre una piattaforma preziosa per <a href=\"https:\/\/www.ninjaone.com\/it\/operazioni-it-unificate\/\">centralizzare e ottimizzare le operazioni IT<\/a>. L&#8217;integrazione di uno script come quello per tracciare la posizione di un dispositivo amplifica ulteriormente le capacit\u00e0 di NinjaOne, e lo aiuta a essere uno strumento indispensabile per i moderni ambienti IT. Gli script PowerShell, e in particolare quello descritto sopra, offrono un ulteriore livello di flessibilit\u00e0 e potenza agli utenti di NinjaOne, aiutandoli a tenere il passo in un mondo IT dinamico.<\/p>\n","protected":false},"author":35,"featured_media":145002,"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-208167","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-gestione-degli-utenti-e-degli-accessi"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub\/208167","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=208167"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media\/145002"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=208167"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=208167"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=208167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}