Forum Discussion

tonybap1's avatar
tonybap1
Copper Contributor
Jun 09, 2026

Intune Install Printer Driver

I am trying to install a Printer driver via a Win32app using System to install.

 

Have set configuration as below:

 

Its a simple powershell script which runs perfectly when installing on a device as an administrator.

 

$printdriver = "PCL6 V4 Driver for Universal Print"

C:\Windows\system32\pnputil.exe /add-driver "r4600.inf" /install

Add-PrinterDriver -name $printdriver

 

However installing it via Intune I get an event id 215 with failed error code 0x0 HRESULT 0x80070705 on the device.

 

Any help appreciated.

 

 

4 Replies

  • Eric_Brooks's avatar
    Eric_Brooks
    Brass Contributor

    0x80070705 maps to “The printer driver is unknown.” The screenshot also shows that the printer policies are not blocking administrator driver installation, so this is more likely an INF path, driver-name, or packaging issue than a Point and Print restriction.

    The main problem with the current script is the relative path:

    pnputil.exe /add-driver "r4600.inf" /install

    When Intune runs a Win32 app as System, do not assume that the working folder is the same folder used during manual testing. Include the INF and every file supplied with the driver package in the .intunewin package, then use $PSScriptRoot to point to the exact INF file.

    $driverName = "PCL6 V4 Driver for Universal Print" $infPath = Join-Path $PSScriptRoot "r4600.inf" & "$env:windir\System32\pnputil.exe" /add-driver $infPath /install if ($LASTEXITCODE -notin 0, 3010) { exit $LASTEXITCODE } Add-PrinterDriver -Name $driverName -InfPath $infPath -ErrorAction Stop

    Also confirm that PCL6 V4 Driver for Universal Print is the exact driver name defined by the INF, not only the package or download name. After a successful manual installation, run:

    Get-PrinterDriver | Select-Object Name, Manufacturer

    Use the exact value shown under Name in the Intune script.

    For the Win32 app, use an install command such as:

    powershell.exe -ExecutionPolicy Bypass -File .\Install-PrinterDriver.ps1

    Run it in the System context and use a detection rule based on the installed printer driver, not merely the presence of the INF file. For example, detect whether Get-PrinterDriver -Name "PCL6 V4 Driver for Universal Print" succeeds.

    Finally, check C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log and C:\Windows\INF\setupapi.dev.log. They should show whether Intune cannot find the INF, whether a driver-package dependency is missing, or whether the driver name does not match.

  • Hi Tony, 

    I would highly recommend installing the driver as an .intunewin file and upload as  win 32 app from Intune using the guidelines mentioned in this link: 

    https://msendpointmgr.com/2022/01/03/install-network-printers-intune-win32apps-powershell/

    Please let me know if this works for you, 

    Many Thanks

    Ramesh

  • Hi, printer drivers through Intune can be picky because the script may work interactively as admin but behave differently as SYSTEM.

     

    I would test:

     

    1. Run the install script as SYSTEM using PsExec or a similar test method.

    2. Make sure the driver files are packaged inside the Win32 app.

    3. Use full paths, not relative paths.

    4. Add logging to the script so you can see where it stops.

    5. Confirm the driver is signed and allowed by Point and Print restrictions.

     

    Most failures here come down to context, paths, or driver trust. If it works as SYSTEM locally, Intune packaging becomes much easier to troubleshoot.

  • According to:

    https://learn.microsoft.com/en-us/troubleshoot/windows-server/printing/event-ids-associated-point-print-restrictions
    Those errors are related to point-and-print.

    Log Name: Microsoft-Windows-PrintService/Admin

    Source: Microsoft-Windows-PrintService

    Event ID: 215

    Description:

    Installing printer driver <DriverName> failed, error code 0x23f, HRESULT 0x8007023f. See the event user data for context information.

     

    I deploy a printer via Intune using Powershell. I had similar issues years ago. I had to add some code to determine if the architecture was 32-bit or 64-bit as the Intune Management Extension runs 32-bit regardless of which slider was selected on the script in Intune (Run as 64-bit). This was true at that time. It then called the correct version of pnputil (x86 or x64) based on that.

    # Check if the powershell environment is 32-bit or 64-bit and adjusts the path to pnputil.exe accordingly
    if($env:PROCESSOR_ARCHITECTURE -eq "X86"){
        $Installer += "\sysnative\pnputil.exe"
        Write-Information "The Powershell process being run is: 32-bit"
        }
        else {
            $Installer += "\System32\pnputil.exe"
            Write-Information "The Powershell process being run is: 64-bit"
        }
    $params = @("/add-driver","`"$INFCache`"","/subdirs","/install")
    start-process $Installer -ArgumentList $params -wait -WindowStyle Hidden
    Add-PrinterDriver -Name $driver
    Add-PrinterPort -Name $port -PrinterHostAddress $address
    Add-Printer -DriverName $driver -Name $name -PortName $port

    Here are the two articles that helped me then:
    WOW64: 
    https://docs.microsoft.com/en-us/windows/win32/winprog64/wow64-implementation-details

    Blog post:
    https://www.petervanderwoude.nl/post/using-the-intune-management-extension-on-a-64-bit-platform-for-a-very-happy-new-year/

    I hope that helps. Maybe things have changed since then but, this logic still works for me today. Good luck!