{"id":208556,"date":"2024-01-22T16:14:04","date_gmt":"2024-01-22T16:14:04","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/verwenden-von-powershell-zum-abrufen-des-geraetestandorts-mit-google-geolocation-api\/"},"modified":"2024-03-04T18:27:10","modified_gmt":"2024-03-04T18:27:10","slug":"verwenden-von-powershell-zum-abrufen-des-geraetestandorts-mit-google-geolocation-api","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/de\/script-hub\/verwenden-von-powershell-zum-abrufen-des-geraetestandorts-mit-google-geolocation-api\/","title":{"rendered":"Verwenden von PowerShell zum Abrufen des Ger\u00e4testandorts mit Google GeoLocation API"},"content":{"rendered":"<h2>Wichtigste Erkenntnisse<\/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\">Das Skript ruft den geografischen Standort eines Ger\u00e4ts mithilfe der Google GeoLocation API ab.<\/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\">Es dient dazu, die benutzerdefinierten Felder von NinjaOne mit Standortdaten zu aktualisieren.<\/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\">Das Skript erfordert eine aktive Internetverbindung und ist f\u00fcr Windows 10-Ger\u00e4te optimiert.<\/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\">Die Google GeoLocation API bietet im Vergleich zu anderen Methoden eine h\u00f6here Genauigkeit und eine breitere Abdeckung.<\/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\">Die Verwendung des Skripts zur Standortverfolgung wirft ethische und datenschutzrechtliche Bedenken auf.<\/li>\n<li>Um Verletzungen der Privatsph\u00e4re zu vermeiden, m\u00fcssen vor dem Einsatz dieses Tools explizite Genehmigungen erteilt werden.<\/li>\n<li>Es ist wichtig, die Tarifgrenzen und die damit verbundenen Kosten f\u00fcr die Google-API zu kennen.<\/li>\n<li>NinjaOne bietet in Verbindung mit solchen Skripten robuste Funktionen f\u00fcr den IT-Betrieb und die Anlagenverwaltung.<\/li>\n<\/ul>\n<p>Im vernetzten IT-\u00d6kosystem von heute ist eine der wertvollsten Informationen der &#8222;Standort&#8220;. Die M\u00f6glichkeit, den geografischen Standort von Ger\u00e4ten zu verfolgen, kann sich bei vielen IT-Vorg\u00e4ngen als entscheidend erweisen, von der Anlagenverwaltung bis zur Sicherheits\u00fcberwachung. In diesem Blogbeitrag wird ein PowerShell-Skript vorgestellt, mit dem IT-Experten und MSPs (Managed Service Provider) <strong>den Standort eines Windows-Ger\u00e4ts ermitteln<\/strong> und mit Hilfe der benutzerdefinierten Felder von NinjaOne speichern k\u00f6nnen.<\/p>\n<h2>Hintergrund<\/h2>\n<p>Das Skript im Fokus aktualisiert benutzerdefinierte Felder mit den geografischen Koordinaten und der Adresse eines Ger\u00e4ts unter Verwendung der <a href=\"https:\/\/developers.google.com\/maps\/documentation\/geolocation\/overview\" target=\"_blank\" rel=\"noopener\">Google GeoLocation API<\/a>. F\u00fcr IT-Fachleute und MSPs ist es von grundlegender Bedeutung, den physischen Standort eines Ger\u00e4ts zu kennen. Ob es darum geht, gestohlene Ger\u00e4te aufzusp\u00fcren, Ger\u00e4te zu \u00fcberpr\u00fcfen oder die geografische Verteilung von IT-Ressourcen zu verifizieren, die Anwendung eines solchen Skripts kann vielf\u00e4ltig und tiefgreifend sein.<\/p>\n<h2>Das Skript<\/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>Zugriff auf \u00fcber 300 Skripte im NinjaOne Dojo<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/de\/kostenlosetestversionformular\/\">Zugang erhalten<\/a><\/p>\n<\/div>\n<h2>Detailansicht<\/h2>\n<p>Das Skript kann in drei Hauptteile unterteilt werden:<\/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>Initialisierung<\/strong>:\u00a0Das Skript beginnt mit der Definition von Parametern wie GoogleApiKey, CustomFieldName und AddressCustomFieldName. Diese Parameter dienen als Eingaben, um das Verhalten des Skripts anzupassen.<\/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>Hauptoperationen<\/strong>:\u00a0Der Hauptteil des Skripts umfasst:<\/li>\n<li>\u00dcberpr\u00fcfung der verf\u00fcgbaren WiFi-Netzwerke in der Umgebung des Ger\u00e4ts.<\/li>\n<li>Erstellen einer Nutzlast mit WiFi-Daten und Senden an den Geolokalisierungsdienst von Google, um den Breiten- und L\u00e4ngengrad zu ermitteln.<\/li>\n<li>Abruf der n\u00e4chstgelegenen Stadt oder Adresse anhand der ermittelten Koordinaten.<\/li>\n<li>Aktualisierung der benutzerdefinierten Felder in NinjaOne mit den Standortdaten.<\/li>\n<li><strong>Abschlie\u00dfende Operationen<\/strong>:\u00a0ScriptVariablen werden initialisiert, um Daten zu speichern und bei weiteren Operationen zu helfen.<\/li>\n<\/ul>\n<h2>Potenzielle Anwendungsf\u00e4lle<\/h2>\n<p>Stellen Sie sich einen IT-Fachmann, Alex, vor, der f\u00fcr ein Unternehmen arbeitet. Sie wurden beauftragt, alle Laptops in mehreren Niederlassungen zu pr\u00fcfen. Mit diesem Skript kann Alex schnell den geografischen Standort jedes Laptops abrufen und sicherstellen, dass sie sich tats\u00e4chlich an den angegebenen B\u00fcrostandorten befinden.<\/p>\n<h2>Vergleiche<\/h2>\n<p>Der Ansatz des Skripts nutzt die Google GeoLocation API, die genaue Standortangaben liefert. Alternativen k\u00f6nnen die Verwendung nativer Windows-Standortdienste oder anderer APIs von Drittanbietern sein. Aufgrund seiner umfangreichen Daten und seiner robusten Infrastruktur ist Google jedoch die erste Wahl f\u00fcr solche Anwendungen, da es eine h\u00f6here Genauigkeit und eine breitere Abdeckung bietet.<\/p>\n<h2>FAQs<\/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>Funktioniert dieses Skript auch offline?<\/strong><br \/>\nDas Skript ben\u00f6tigt eine aktive Internetverbindung, um mit den Diensten von Google zu kommunizieren.<\/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>Gibt es eine Begrenzung f\u00fcr die Anzahl der Standortanfragen?<\/strong><br \/>\nF\u00fcr die Google GeoLocation API gelten je nach Kontotyp und Abrechnungsstatus bestimmte Einschr\u00e4nkungen.<\/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>Funktioniert das Skript nur unter Windows 10?<\/strong><br \/>\nDie Mindestanforderung f\u00fcr das Betriebssystem des Skripts ist Windows 10.<\/li>\n<\/ul>\n<h2>Auswirkungen<\/h2>\n<p>Die M\u00f6glichkeit, den Standort eines Ger\u00e4ts zu verfolgen, ist zwar ein gro\u00dfartiges Instrument f\u00fcr die Anlagenverwaltung und die Sicherheit, wirft aber auch Fragen zum Datenschutz auf. IT-Teams m\u00fcssen unbedingt sicherstellen, dass dieses Tool nach ethischen Gesichtspunkten und mit den entsprechenden Berechtigungen und Angaben verwendet wird. Unerlaubtes Tracking kann zu Verst\u00f6\u00dfen gegen Datenschutzgesetze und -vorschriften f\u00fchren.<\/p>\n<h2>Empfehlungen<\/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\">Holen Sie immer eine ausdr\u00fcckliche Genehmigung ein, bevor Sie dieses Skript auf einem Ger\u00e4t ausf\u00fchren.<\/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\">Vergewissern Sie sich, dass Sie die Tarifgrenzen und Kosten im Zusammenhang mit der Google GeoLocation API kennen.<\/li>\n<li>Regelm\u00e4\u00dfige \u00dcberpr\u00fcfung und Kontrolle der Protokolle, um jeglichen Missbrauch zu verhindern.<\/li>\n<\/ul>\n<h2>Abschlie\u00dfende \u00dcberlegungen<\/h2>\n<p>F\u00fcr MSPs und IT-Experten bietet NinjaOne eine unsch\u00e4tzbare Plattform zur <a href=\"https:\/\/www.ninjaone.com\/de\/unified-it-operations\/\">Zentralisierung und Rationalisierung des IT-Betriebs<\/a>. Die Integration solcher Skripte zum Abrufen von Ger\u00e4testandorten erweitert die M\u00f6glichkeiten von NinjaOne weiter und macht es zu einem unverzichtbaren Werkzeug f\u00fcr moderne IT-Landschaften. PowerShell-Skripte, insbesondere solche wie das oben zerlegte, bieten den Benutzer:innen von NinjaOne eine zus\u00e4tzliche Ebene an Flexibilit\u00e4t und Leistung, die ihnen hilft, im dynamischen IT-Umfeld Schritt zu halten.<\/p>\n","protected":false},"author":35,"featured_media":145001,"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":[4309],"class_list":["post-208556","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub\/208556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/comments?post=208556"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media\/145001"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media?parent=208556"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/operating_system?post=208556"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/use_cases?post=208556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}