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 Ivanti – PowerShell 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 Ivanti – https://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).

HII.cmd (Custom Legacy solution)
Description
Provisionning Alternative Ivanti – I don’t use Ivanti’s LANDESK HII, but a custom script:
Provisionning Alternative Ivanti – https://github.com/DavidWuibaille/IVANTI/tree/main/Provisionning_Hii
Provisionning Alternative Ivanti – Example layout: unzip to a shared directory (preferred server).

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.

- Run
HII.bat

- 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.

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.

