Categories
Allgemein

Hardware Hashes für Autopilot Registrierung zentral erfassen

Windows Autopilot bietet die Möglichkeit, neue Geräte in Intune automatisch einzurichten und konfigurieren zu lassen. Hierdurch lassen sich die manuellen Schritte beim Onboarding neuer Geräte auf ein Minimum reduzieren oder sogar vollständig vermeiden. Ein in Autopilot registriertes Endgerät lässt sich zudem zentral aus der Ferne zurücksetzen.

Einleitung

Um ein Gerät für die Verwendung mit Autopilot zu registrieren, muss die eindeutige ID (der Hardwarehash) des Gerätes vorab bekannt sein. Der Hardwarehash ist auf jedem Windows Computer hinterlegt und kann z. B. mittels einer WMI-Abfrage ermittelt werden. Möglicherweise kann bereits der Hardwarelieferant die Hashes in Form einer CSV-Datei zusammen mit neu erworbenen Geräten übermitteln oder gar die Registrierung in Intune direkt vornehmen. In manchen Fällen ist es jedoch so, dass Endgeräte bereits in Umlauf sind, die im Laufe der Zeit manuell in Intune eingebucht worden sind. In diesem Fall kann das nachträgliche Ermitteln der Hashes zur Herausforderung werden. Das hier beschriebene Verfahren zeigt eine Möglichkeit auf, die Hashes von bereits in Intune sichtbaren Endgeräten zentral einzusammeln und für die Autopilotregistrierung zu nutzen.

Konzept

Das Einsammeln der Hardwarehashes erfolgt hier über die Installation eines Intune Application Packages. Dabei handelt es sich nicht um eine Installation im eigentlichen Sinne, da keine Dateien auf dem Endgerät installiert werden. Stattdessen ermittelt das Installationsprogramm auf dem Endgerät die Seriennummer sowie den Hardware-Hash und legt diese Daten in Form einer CSV-Datei in einem Dateishare innerhalb eines Azure Storage Accounts zentral ab.

Das Speichern der Hashwerte erfolgt in Form von .csv Dateien, wobei für jedes Gerät eine neue Datei angelegt wird, um den konkurrierenden Zugriff auf eine einzelne Datei zu vermeiden. Die einzelnen Dateien können später jedoch sehr einfach zu einer einzelnen Datei zusammengeführt werden.

Für den Zugriff auf den Azure Storage Share verwendet die Hardware Hash Collector App einen SAS Token, der über die Installationskommandozeile an das App Package übergeben wird.

Umsetzung

In diesem Abschnitt soll die Umsetzung der angedachten Lösung erläutert werden.

Storage Account

Zum Speichern der Hardwarehashes wird ein Azure Storage Account benötigt, der über das Azure Portal mit diesen Schritten angelegt werden kann:

  • Storage accounts | Create
  • Subscription | Resource group | Region wählen
  • Beliebigen, eindeutigen Storage acount name vergeben
  • Kostengünstigste Redundancy wählen
  • Review
  • Create
  • Go to resource

File Share anlegen

Innerhalb des Storage Accounts muss nun ein File Share mit diesen Schritten erzeugt werden:

  • File shares
  • File share
  • Eindeutigen Name vergeben und kostengünstigen Tier wählen
  • Create
  • Properties des gerade angelegten File Share auswählen
  • Nun die URL in die Zwischenablage kopieren und zur späteren Verwendung sichern

SAS-Token erzeugen

Für den Zugriff auf den FileShare wird eine Shared Access Signature (SAS) benötigt, die wie folgt angelegt werden kann:

  • Shared access signature wählen
  • Alle Allowed resource types auswählen
  • Sinnvolles expiry date wählen
  • Generate SAS and connection string
  • Generiertes SAS token in die Zwischenablage kopieren und sichern, da es später benötigt wird

Intune Application Package

Das eigentliche Ermitteln und Speichern des Hardwarehash geschieht mit Hilfe einer Application, die über Intune bereitgestellt und verteilt wird. Dabei handelt es sich nicht im engeren Sinne um eine Application, die auf dem Endgerät tatsächlich installiert wird, vielmehr besteht das Package aus einem Installationsskript, das einmalig ausgeführt wird. Zur Laufzeit des Skripts wird der Hashwert des Gerätes exportiert und zentral gespeichert. Zusätzlich wird ein Wert in der Windows Registry des Endgeräts angelegt, der für die erforderliche DetectionRule des Intune Application Package verwendet wird.

Vorbereiten der Intune Application

Wesentlicher Inhalt des Application Package ist ein PowerShell Skript namens Export-Hash.ps1, dessen Skriptcode hier aufgeführt ist.

[CmdletBinding()]

Param (

       [Parameter(Mandatory=$true)]

       [string]$TargetURL,

       [Parameter(Mandatory=$true)]

       [string]$SasToken

)

# Collect data

$computer = New-Object PSObject

$win32Bios = Get-CimInstance -Class Win32_BIOS

$devDetail = Get-CimInstance -Namespace root/cimv2/mdm/dmmap -Class MDM_DevDetail_Ext01 -Filter „InstanceID=’Ext‘ AND ParentID=‘./DevDetail'“

$hash = „“

if ($devDetail)

{

       $hash = $devDetail.DeviceHardwareData

}

$computer | Add-Member -MemberType NoteProperty -Name „Device Serial Number“ -Value $win32Bios.SerialNumber

$computer | Add-Member -MemberType NoteProperty -Name „Windows Product ID“ -Value „“

$computer | Add-Member -MemberType NoteProperty -Name „Hardware Hash“ -Value $hash

# Write data to CSV file

$tempFolderPathName = Join-Path $env:TEMP -ChildPath „CollectAutoPilotInfo“

If(-not (Test-Path -Path $tempFolderPathName))

{

    New-Item -Path $tempFolderPathName -ItemType Directory

}

$dataFileName = Join-Path -Path $tempFolderPathName -ChildPath „$($env:COMPUTERNAME).csv“

$computer | ConvertTo-Csv -NoTypeInformation -Delimiter „,“ | % {$_.Replace(‚“‚,“)} | Out-File $dataFileName -Force

# Upload CSV file

$url = $TargetUrl

If(-not ($SasToken.StartsWith(„?“)))

{

    $url += „?“

}

$url += $SasToken

Start-Process -FilePath „azcopy.exe“ -ArgumentList „copy $dataFileName `“$url`““

# Register successful application deployment for detection method to work.

$appRegistryKey = „HKLM:\SOFTWARE\Iteracon\Apps\HardwareHashCollector“

If(-not (Test-Path -Path $appRegistryKey))

{

    New-Item -Path $appRegistryKey -Force

}

New-ItemProperty -Path $appRegistryKey -Name „Version“ -Value „1.0“ -Force

Zur Laufzeit des Skripts wird zusätzlich AzCopy von Microsoft benötigt, das zusammen mit der oben dargestellten Skriptdatei in das Intune Application Package aufgenommen wird. Mehr zu AzCopy und der Möglichkeit zum Download des Tools findet man hier: https://learn.microsoft.com/de-de/azure/storage/common/storage-use-azcopy-v10.

Die Skriptdatei Export-Hash.ps1 sowie AzCopy.exe wird mit Hilfe des Microsoft Win32 Content Prep Tool zu einer .intunewin Datei konvertiert. Die Vorgehensweise hierzu wird als bekannt vorausgesetzt und hier nicht näher erläutert. Ausführliche Informationen zu diesem Thema findet man jedoch hier: https://learn.microsoft.com/de-de/mem/intune/apps/apps-win32-prepare .

Intune Package erstellen

Die Vorgehensweise des Anlegens eines Intune Win32 Application Package wird ebenfalls als bekannt angenommen, nähere Informationen dazu sind hier zu finden: https://learn.microsoft.com/de-de/mem/intune/apps/apps-win32-add.

Beim Anlegen der Application sind folgende Parameter zu berücksichtigen. Die Werte für <File Share URL> und <SAS Token> bei der Konstruktion des Install Command sind dabei durch die entsprechenden Werte zu ersetzen, die sich beim Anlegen des Storage Account und des File Share ergeben haben, siehe oben. Die beiden Werte müssen jeweils in doppelte Anführungszeichen gesetzt werden.

App Information
NameHardware Hash Collector
Version1.0
PublisherITERACON
Program
Install commandPowerShell.exe -ExecutionPolicy Bypass -File .\Export-Hash.ps1 -TargetURL „<File Share URL>“ -SasToken „<SAS Token>“
Uninstall command
Install behaviorSystem
Detection Rules
Rules formatManually configure detection rules
Rule TypeRegistry
Key PathHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\iteracon\Apps\HardwareHashCollector
Value NameVersion
Detection methodVersion comparison
OperatorGreater than or equal to
Value1.0

Die so erstellte Application wird nun allen Geräten als required zugewiesen und damit die Verteilung gestartet. Nach und nach werden dann die Hardwarehashes in Form von .csv Dateien in dem zuvor bereitgestellten Azure Storage File Share abgelegt, von wo aus sie auf einen Adminrechner heruntergeladen werden können. Dies kann z. B. mit dem Microsoft Azure Storage Explorer erfolgen:

Die eingesammelten .csv Dateien können entweder einzeln in Intune importiert, besser jedoch mit Hilfe dieser beiden PowerShell Befehle zu einer einzelnen Datei zusammengeführt und dann importiert werden:

MD .\Merged

Get-ChildItem -Filter *.csv | Select -ExpandProperty FullName | Import-Csv | Export-Csv .\Merged\Autopilot.csv -NoTypeInformation -Append

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

nach oben