Provisionning – Alternative to Ivanti HII

Provisionning Alternative Ivanti – Previously I used a batch script for driver management. It works, but requires exact model names. Because PowerShell isn’t available natively in provisioning

Provisionning Alternative Ivanti – Previously I used a batch script for driver management. It works, but requires exact model names. Because PowerShell isn’t available natively in provisioning WinPE, it was not convenient to use directly.

HII.ps1

Provisionning Alternative Ivanti – Using PS2EXE, you can convert a .ps1 to .exe so the PowerShell logic runs in WinPE without PowerShell installed.

Provisionning Alternative IvantiPowerShell script (example)

Provisionning Alternative Ivanti – Adapt paths to your production layout. The script expects the driver source root as a parameter (-path).

Param(
    [parameter(Mandatory=$true)][String]$path
)

$Biosvendor = Get-WmiObject Win32_ComputerSystem
$Marque = $Biosvendor.Manufacturer
$Modele = $Biosvendor.Model

if ($Marque -like "*Dell*")       { $Marque = "Dell" }
if ($Marque -like "*Hewlett-Packard*")   { $Marque = "HP" }
if ($Marque -like "*VMware*")       { $Marque = "VM" }
if ($Marque -like "*TOSHIBA*")       { $Marque = "TOSHIBA" }
if ($Marque -like "*Microsoft*")     { $Marque = "Microsoft" }
if ($Marque -like "*Wacom*")       { $Marque = "Wacom" }
if ($Marque -like "*Aava*")       { $Marque = "Aava" }
if ($Marque -like "*WINCOR*")       { $Marque = "WINCOR" }
if ($Marque -like "*LENOVO*")       { $Marque = "LENOVO" }

if ($Marque -eq "LENOVO") {
  $BiosSystem = Get-WmiObject Win32_ComputerSystemproduct
  $Modele = $BiosSystem.Version
}
$Modele = $Modele.replace("HP RT5810","RP5810")
$Modele = $Modele.replace("HPRT5810","RP5810")
$Modele = $Modele.replace("RP581P","RP5810")
$Modele = $Modele.replace("L3D26AV","")
$Modele = $Modele -ireplace [regex]::Escape(","), ""
$Modele = $Modele -ireplace [regex]::Escape("HP "), ""
$Modele = $Modele -ireplace [regex]::Escape("Tower"), ""
$Modele = $Modele -ireplace [regex]::Escape("Workstation"), ""
$Modele = $Modele -ireplace [regex]::Escape("2-in-1"), "2IN1"
$Modele = $Modele -ireplace [regex]::Escape("EliteBook"), ""
$Modele = $Modele -ireplace [regex]::Escape("EliteOne"), ""
$Modele = $Modele -ireplace [regex]::Escape("EliteDesk"), ""
$Modele = $Modele -ireplace [regex]::Escape("Elite"), ""
$Modele = $Modele -ireplace [regex]::Escape("ProBook"), ""
$Modele = $Modele -ireplace [regex]::Escape("ProDesk"), ""
$Modele = $Modele -ireplace [regex]::Escape("Non-Touch AiO"), "AiO"
$Modele = $Modele -ireplace [regex]::Escape("TouchAiO"), "AiO"
$Modele = $Modele -ireplace [regex]::Escape("Non-TouchAiO"), "AiO"
$Modele = $Modele -ireplace [regex]::Escape("TouchAiO"), "AiO"
$Modele = $Modele -ireplace [regex]::Escape("AiO"), "AiO"
$Modele = $Modele -ireplace [regex]::Escape("TWR"), ""
$Modele = $Modele -ireplace [regex]::Escape("23-in"), ""
$Modele = $Modele -ireplace [regex]::Escape("23.8"), ""
$Modele = $Modele -ireplace [regex]::Escape("RPC RETAIL SYSTEM"), "RP"
$Modele = $Modele -ireplace [regex]::Escape("RPS RETAIL SYSTEM"), "RP"
$Modele = $Modele -ireplace [regex]::Escape("Retail System Model"), ""
$Modele = $Modele -ireplace [regex]::Escape("Base Model System"), ""
$Modele = $Modele -ireplace [regex]::Escape("RETAIL SYSTEM"), ""
$Modele = $Modele -ireplace [regex]::Escape("Retail Model"), ""
$Modele = $Modele -ireplace [regex]::Escape("BASE MODEL"), ""
$Modele = $Modele -ireplace [regex]::Escape("RPCRETAIL YSTEM"), "RP"
$Modele = $Modele -ireplace [regex]::Escape("RPSRETAILSYSTEM"), "RP"
$Modele = $Modele -ireplace [regex]::Escape("RetailSystemModel"), ""
$Modele = $Modele -ireplace [regex]::Escape("BaseModelSystem"), ""
$Modele = $Modele -ireplace [regex]::Escape("RETAILSYSTEM"), ""
$Modele = $Modele -ireplace [regex]::Escape("RetailModel"), ""
$Modele = $Modele -ireplace [regex]::Escape("BASEMODEL"), ""
$Modele = $Modele -ireplace [regex]::Escape("NOTEBOOK"), ""
$Modele = $Modele -ireplace [regex]::Escape(" PC"), ""
$Modele = $Modele -ireplace [regex]::Escape("RP5 "), "RP"
$Modele = $Modele -ireplace [regex]::Escape(" POS"), ""
$Modele = $Modele -ireplace [regex]::Escape("MODEL "), ""
$Modele = $Modele -ireplace [regex]::Escape("Business System"), ""
$Modele = $Modele -ireplace [regex]::Escape("Wacom"), ""
$Modele = $Modele -ireplace [regex]::Escape("Mobile "), ""
$Modele = $Modele -ireplace [regex]::Escape("ThinkCentre"), ""
$Modele = $Modele -ireplace [regex]::Escape("ThinkPad"), ""
$Modele = $Modele -ireplace [regex]::Escape("15.6 Inch"), ""

$Modele = $Modele.replace(" ","")

$ModeleFull = $path+""+$Marque+"_"+$Modele
#exit 0
write-host "x:windowssystem32dism.exe /Image:C: /Add-Driver /Driver:$ModeleFull /recurse"
Start-Process -FilePath "x:windowssystem32dism.exe" -ArgumentList "/Image:C: /Add-Driver /Driver:$ModeleFull /recurse" -wait -PassThru

Provisionning Alternative Ivanti – Download :

Provisionning Alternative Ivantihttps://github.com/DavidWuibaille/IVANTI/tree/main/Provisionning_Hii

Provisionning Alternative Ivanti

Provisionning Alternative Ivanti – The PowerShell EXE requires the driver source path as an argument (e.g., mapped share or local folder).

Provisionning Alternative Ivanti screenshot

HII.cmd (Custom Legacy solution)

Description

Provisionning Alternative Ivanti – I don’t use Ivanti’s LANDESK HII, but a custom script:

Provisionning Alternative Ivantihttps://github.com/DavidWuibaille/IVANTI/tree/main/Provisionning_Hii

Provisionning Alternative Ivanti – Example layout: unzip to a shared directory (preferred server).

Driver installation script

Provisionning Alternative Ivanti – Update HII.bat to:

  • Add your workstation models
  • Add operating systems if needed
  • Adjust the path(s) used

Provisioning task

Provisionning Alternative Ivanti – Modify your provisioning to use the batch/EXE approach:

  • Map a network drive (preferred server). Use the same drive letter referenced in HII.bat.
Mapping a network drive for provisioning task
  • Run HII.bat
Running HII.bat file
  • Then run C:driversinstall.bat (uncheck “stop task on error”).

Provisionning Alternative Ivanti – This lets you call a model-specific install.bat. For setup-based drivers, place the installer under C:drivers<Model> and call it silently, e.g. C:driversXsetup.exe /s.

Install.bat script for specific drivers

Other solution :TII

Provisionning Alternative Ivanti – An alternative to Ivanti’s HII: TII

Provisionning Alternative Ivanti – This utility comes with the source code and implementation procedure.

TII utility screenshot