Localiser un appareil depuis le portail Intune ou avec PowerShell et MS Graph

Dans cet article, nous verrons comment localiser un appareil depuis le portail Endpoint Manager (Intune) puis à l’aide de PowerShell et MS Graph.

Localiser votre appareil

Microsoft a récemment ajouté la possibilité de localiser un appareil depuis le portail Microsoft Endpoint Manager.
Ci-dessous le message sur la page Nouveutés:
Cette action existait déjà depuis un bon bout de temps mais il est désormais possible de visualiser sur une carte et obtenir des coordonées GPS.

Prérequis

Pour que cela fonctionne, il faut que la localisation soit activée sur votre poste.
Cela est visible dans le centre de notification tel que ci-dessous:


Il est possible de l’activer/désactiver tel que ci-dessous:

$Path = "SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location"
# Enable location
New-ItemProperty -Path "HKLM:\$Path" -Name "Value" -Type String -Value "Allow" -Force
# Disable location
New-ItemProperty -Path "HKLM:\$Path" -Name "Value" -Type String -Value "Deny" -Force

Depuis le portail Intune

  1. Cliquez sur un appareil
  2. Cliquez sur les 3
  3. Cliquez sur Locate device
  4. La localisation de votre appareil s’affiche alors

Avec PowerShell

Nous utiliserons le module Microsoft.Graph.Intune
La 1ère étape consiste à récupérer l’ID de l’appareil concerné.
Nous allons procéder de la manière suivante:

  1. Récupérer les infos en fonction du nom du poste
$Get_Device = Get-IntuneManagedDevice | Get-MSGraphAllPages | where{$_.deviceName -like "*POSTE-MAISON*"}
  1. Récupérer l’ID du poste
$Get_Device_ID = $Get_Device.ID
  1. Exécuter l’action Locate device
$url_locate = https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/$Get_Device_ID/locateDevice
Invoke-MSGraphRequest -Url $url_locate -HttpMethod POST
  1. Vérifier la locatisation:
$url = https://graph.microsoft.com/v1.0/deviceManagement/managedDevices/$Get_Device_ID
(Invoke-MSGraphRequest -Url $url -HttpMethod GET).deviceActionResults.deviceLocation
  1. Le résultat est vide car il faut attendre un peu.
  2. La machine concernée recevra une notification tel que ci-dessous:
  1. Il est désormais possible de récupérer les infos GPS:
(Invoke-MSGraphRequest -Url $url -HttpMethod GET).deviceActionResults.deviceLocation
  1. Ci-dessous le résultat:

Récupérer l’adresse et afficher dans un plan

Maintenant, nous allons utiliser les informations latitude et longitude pour récupérer l’adresse et afficher le résultat dans Google Maps.

  1. Récupération de la latitude et longitude:
$Latitude = (Invoke-MSGraphRequest -Url $url -HttpMethod GET).deviceActionResults.deviceLocation.latitude
$Longitude = (Invoke-MSGraphRequest -Url $url -HttpMethod GET).deviceActionResults.deviceLocation.longitude
  1. Affichage du résultat dans Google Maps:
Start-Process "https://www.google.com/maps?q=$Latitude,$Longitude"
  1. Ci-dessous le résultat:
  1. Récupération des coordonnées exactes:
$Lat = $Latitude.replace(",",".")
$Long = $Longitude.replace(",",".")
$Location = "https://geocode.xyz/" + "$Lat,$Long" + "?geoit=json"
Invoke-RestMethod $Location
  1. Ci-dessous le résultat:

A propos de l'auteur

[avatar]

Ingénieur Systèmes travaillant principalement sur ce qui tourne autour du poste de travail (MDT, SCCM, Intune) et l’automatisation avec PowerShell. MVP Microsoft et auteur pour ENI, il publie régulièrement sur son blog et gère différents groupes Facebook, PowerShell et WPF (~4000 membres), Windows Autopilot (~3000 membres).

Une réponse sur “Localiser un appareil depuis le portail Intune ou avec PowerShell et MS Graph”

  1. Hello, la question à présent c est comment activer la location à distance via Intune. Les commandes citées ne passent sur un poste avec un user non admin via un script powershell déployé via intune, il me semble.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *