Important Notice: On February 29th, this community was put into read-only mode. All existing posts will remain but customers are unable to add new posts or comment on existing. Please feel to join our Community Discord for any questions and discussions.

Deploying .iso files for Win Upgrade

We have many older versions of Win, 1703, 1709, 1803, etc.

Is it possible to use a .iso file to upgrade these remotely?



Date Votes
  • You can push the .ISO to the target and mount it with Mount-DiskImage -ImagePath "$:\$path\$yourISO.iso" then pull the drive letter with (Get-DiskImage "$:\$path\$yourISO.iso" | Get-Volume).DriveLetter and use it in your installation script.

    If you can't push the .ISO out easily with PDQ, you can put it on a web server and use 'Start-BitsTransfer' to pull the file.

  • If you don't want to use .ISO, you should be able to extract the contents and copy those files to the machine. Then run "setup.exe /auto upgrade /quiet /compat IgnoreWarning"

    That will upgrade the machine without prompt, ignore out dated drivers, and reboot when finished.

  • I have been using PDQ Deploy solely for Windows 10 upgrades and have a process that has been working very well for the 2500+ PCs I've deployed out to so far.

    Starts off by using the File Copy step to copy the ISO to the desired PC. Next I have a Powershell Step which opens the ISO and extracts the contents locally to the hard drive and set up the necessary file structure for the last step. The last step runs some switches off of the setup.exe to process the upgrade before initiating a Reboot Step. Essentially looks like this:

    Step 1: File Copy ISO from server share to workstation

    Step 2: Extract ISO files with Powershell and remove the ISO when extraction is complete.

    $MountISO = mount-diskimage -imagepath C:\upgrade\SW_DVD5_Win_Ent_10_1709_64BIT_English_MLF_X21-50143.ISO -passthru | get-volume

    $DriveLetter = $MountISO.DriveLetter

    New-Item -Path "C:\Upgrade" -Name "Files" -ItemType "directory"

    New-Item -Path "C:\Upgrade" -Name "Logs" -ItemType "directory"

    Copy-Item "${DriveLetter}:\*" -Destination C:\upgrade\files -recurse -force

    Dismount-DiskImage -Imagepath C:\upgrade\SW_DVD5_Win_Ent_10_1709_64BIT_English_MLF_X21-50143.ISO

    Remove-Item "C:\Upgrade\SW_DVD5_Win_Ent_10_1709_64BIT_English_MLF_X21-50143.ISO" -Force

    Step 3: Run the upgrade from CMD step.

    cd C:\Upgrade\Files

    setup.exe /Auto Upgrade /Quiet /showoobe none /noreboot /compat IgnoreWarning /InstallFrom C:\Upgrade\Files\sources\install.wim /DynamicUpdate enable /postoobe C:\Upgrade\SetupComplete.cmd /migratedrivers all /copylogs C:\Upgrade\Logs

    Step 4: Reboot step

    Step 5: Sleep for 900 seconds to allow the upgrade to fully complete. For really old systems, I recommend kicking the time out to 1200 seconds.

    Step 6: Check if the upgrade failed with Powershell step. Replace "1709" with whatever version you're upgrading based off the ISO you're using.

    $OSBuild = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ReleaseId).ReleaseId

    If ($OSBuild -eq "1709")

    {exit 0}


    {exit 999}

    Step 7: Delete upgrade files with Powershell step

    Remove-Item "C:\Upgrade" -Recurse -Force

  • I edited your post to fix a couple of formatting issues. For example, it ate {DriveLetter} in your copy step for some reason, so I escaped the troublesome characters with backslashes \.

  • Thank you! I had caught a couple things that had formatted or not carried over well but thank you very much for fixing the other things I had missed.

  • @TimMccabe-ETSD How long did this process take? I've tested other "methods" of upgrading and they seem to take way to long.