HWID gyűjtése GPO használatával

Rengeteg cég a NIS2 miatt tervezi bevezetni az SCCM-et vagy az Intune-t mint MDM megoldás. Mivel ezeknek a cégeknek nincsen központi megoldásuk a gépek kezelésére ezért az Autopilot-hoz szükséges HWID (hardware hash) beszerzése nehézkes lehet. Abban az esetben ha ezzel a kihívással szembesültél, akkor ez a cikk megoldást jelenthet a számodra!

A következő megoldás amit bemutatok, Group Policy haszálatával gyűjti be a HWID-kat egy Azure Containerbe.

Komponensek

Az On-Premisse Active Directory-n szükségünk van egy Group Policy-ra amit a felhasználók Organizational unitjához tudunk link-elni. Ez a Group Policy a következő komponenseket hozza létre a klienseken:

  • ‘C:\HWID’ mappát, ahova a szükséges fileokat másoljuk a kliensen.
  • ‘HWID_Harvest.ps1’ file-t, ami az ‘orchestrator’ file, ő irányítja a folyamatot.
  • ‘Runscript.vbs’ file-t, ami segítségével a HWID_Harvest.ps1 file a háttérben tud futni anélkül, hogy a felhasználó ebből bármit érzékelne.
  • ‘HWID Harvester’ scheduled task-ot, ami a következő bejelentkezésnél fut le.

Szükségünk van egy Azure blob storage-ra, ahova a következő komponenseket kell feltölteni ide:

  • ‘azcopy.exe’ tool-t
  • ‘Get-WindowsAutopilotInfo.ps1’ file-t
  • továbbá a generált ‘s/n.csv’ fileokat ide gyűjtjük

Szükséges fileok beszerzése és létrehozása

Gyűjtsük be a szükséges fileokat.

  1. azcopy.exe’ tool : Download Link
  1. Get-WindowsAutopilotInfo.ps1’ file-t amit PowerShell segítségével tudunk letölteni:
    $env:Path += ";C:\Program Files\WindowsPowerShell\Scripts"
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
    Install-Script -Name Get-WindowsAutopilotInfo
  1. HWID_Harvest.ps1’ file tartalma:
    # Enable TLS 1.2
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    # Define variables
    $hwidPath = "C:\HWID"
    $localScript = "$hwidPath\Get-WindowsAutoPilotInfo.ps1"
    $azCopyPath = "C:\Windows\azcopy.exe"
    $blobURL = "https://vtrebvrrvbcku.blob.core.windows.net/hwid?sp=..." # <- Cseréld ki érvényes URL-re
    $azCopyDownloadURL = "https://vtrebvrrvbcku.blob.core.windows.net/hwid/azcopy.exe?sp=..." # <- Cseréld ki érvényes URL-re
    $scriptURL = "https://vtrebvrrvbcku.blob.core.windows.net/hwid/Get-WindowsAutopilotInfo.ps1?sp=..." # <- Cseréld ki érvényes URL-re

    # Get serial number
    $sn = (Get-CimInstance Win32_BIOS).SerialNumber
    $file = "$hwidPath\$sn.csv"

    # Ensure HWID directory exists
    if(!(Test-Path $hwidPath)){
    New-Item -ItemType Directory -Path $hwidPath -Force | Out-Null
    }

    # Exit if .csv file already exists
    if(Test-Path $file){
    exit
    }

    # Download Get-WindowsAutoPilotInfo.ps1 from Blob
    Invoke-WebRequest -Uri $scriptURL -OutFile $localScript

    # Download AzCopy if not exists
    if(!(Test-Path $azCopyPath)){
    (New-Object System.Net.WebClient).DownloadFile($azCopyDownloadURL, $azCopyPath)
    }

    # Generate the HWID CSV
    & $localScript -OutputFile $file

    # Upload to Blob Storage
    & $azCopyPath copy "$file" "$blobURL" --overwrite=true --check-length=false
  1. Runscript.vbs’ file tartalma:
    Dim shell,command
    command = "powershell.exe -windowstyle hidden -noprofile -executionpolicy bypass -file ""C:\HWID\HWID_Harvest.ps1"""
    set objShell = CreateObject("wscript.shell")
    objShell.Run command,0

Komponensek feltöltése az Azure ‘Containerbe’

Ha segítségre van szükséged az Azure Container létrehozásában, erről itt olvashatsz: LINK

Töltsük fel a ‘Get-Windowsautopilotinfo.ps1’ és az ‘azcopy.exe’ fileokat az ‘Upload’ használatával az Azure Containerbe.

SAS token generálása és script frissítése

  1. Generáljuk le a szökséges link-eket, majd frissítsük a ‘HWID_Harvest.ps1’-fileunkat.
  1. $blobURL = Ide adjuk meg a ‘Container’ elérési URL-ét.
  2. Kattintsunk a ‘…’ gombra a létrehozott ‘Container’ mellett majd a ‘Generate SAS’ opcióra:
  • Generáljuk le a LINK-et és a SAS tokent a következő beállításokkal:
  • Adjuk meg a ‘Blob SAS URL’ értékét a $blobURL változónkba.
  1. $azCopyDownloadURL = Ide adjuk meg az ‘azcopy.exe’ elérési URL-ét.
  2. Kattintsunk a ‘…’ gombra a feltöltött ‘azcopy.exe’ mellett majd a ‘Generate SAS opcióra’.Most ‘Read’ jogosultsággal generáljuk le az SAS URL-t, ügyeljünk a ‘Start’ és ‘Expiry’ beállítások konfigurálása.
  3. Adjuk meg a ‘Blob SAS URL’ értékét a $azCopyDownloadURL válltozóba.
  4. $scriptURL = Ide adjuk meg a ‘Get-WindowsAutopilotInfo.ps1’ elérési URL-ét.
  5. Kattintsunk a ‘…’ gombra a feltöltött ‘Get-WindowsAutopilotInfo.ps1’ mellett majd a ‘Generate SAS opcióra’.Szintén ‘Read’ jogosultsággal generáljuk le az SAS URL-t, ügyeljünk a ‘Start’ és ‘Expiry’ beállítások konfigurálása.
  6. Adjuk meg a ‘Blob SAS URL’ értékét a $scriptURL válltozóba.
  7. Mentsük el a módosított ‘HWID_Harvest.ps1’ file-t.

Group Policy konfigurálása

  1. Hozzunk létre egy új Group Policy-t az On-Premisse Active Directory szerveren.
  2. Töltsük fel a szükséges fileokat a Sysvol share megfelelő mappájába, hogy a GPO tudja teríteni a kliensekre.:
    – A share címe általában így képződik: ‘Domain\SysVol\domain\policies\{Policy Unique ID}\Users\scripts’.  A Policy ID-ját a GPO ‘Details’ oldalán találjuk:
  1. A ‘Domain\SysVol\domain\policies\{Policy Unique ID}\Users\scripts’ mappába másoljuk be a ‘HWID_Harvest.ps1’ file-t és a ‘Runscript.vbs’ file-t.
  2. Konfiguráljuk a GPO-t, a ‘HWID’ mappa létrehozása érdekében:
    – Computer\User Configuration -> Preferences -> Windows Settings -> Folders
    – New folder
  1. Konfiguráljuk a GPO-t, a szükséges file-ok terítéséhez:
    Computer\User Configuration -> Preferences -> Windows Settings -> Files
    – New -> File
  1. Konfiguráljuk a GPO-t a Scheduled Task létrehozására:
    – Computer\User Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks
    – New -> Scheduled Task (At least Windows 7)

Tesztelés

  1. Link-eljük a GPO-t a megfelelő user OU-ra vagy user csoportra.
    – Jelentkezzünk be egy kliens-re és teszteljük a GPO-t.
    CMD-be futtassuk le a ‘gpupdate /force’ parancsot.
    Győződjünk meg róla, hogy létrejöttek a szükséges file-ok a kliensen.
    Jelentkezzünk ki a felhasználói fiókból, majd lépjünk vissza.
    Ellenőrizzük az Azure Container tartalmát.