Administering DaRT 10 Using PowerShell

Microsoft Diagnostics and Recovery Toolset (DaRT) 10 lets you use PowerShell commands to complete various DaRT 10 administrative tasks or to create the DaRT recovery image.

Perform DaRT tasks using PowerShell

Microsoft Diagnostics and Recovery Toolset (DaRT) 10 provides the following listed set of Windows PowerShell cmdlets. Administrators can use these PowerShell cmdlets to perform various DaRT 10 server tasks from the command prompt rather than from the DaRT Recovery Image wizard.

Name Description
Copy-DartImage Burns an ISO to a CD, DVD, or USB drive.
Export-DartImage Allows the source WIM file, which contains a DaRT image, to be converted into an ISO file.
New-DartConfiguration Creates a DaRT configuration object that is needed to apply a DaRT toolset to a Windows Image.
Set-DartImage Applies a DartConfiguration object to a mounted Windows Image.

Use a PowerShell script to create the recovery image

You can create the DaRT 10 recovery image by using a PowerShell script instead of using the DaRT 10 Recovery Image wizard. In addition, the DaRT 10 Recovery Image wizard can a PowerShell script for you, based on your specified settings.

The following is an example of a PowerShell script that the DaRT 10 Recovery Image wizard has created.

###
### DaRT Image Creation Script
###
### This script was auto generated by the Microsoft DaRT Recovery Image Wizard.
###
### This script uses the DISM and DaRT PowerShell commands to create a bootable DaRT image.
### Both a WIM and ISO file are produced.
###
### Examples of how to burn/copy the DaRT ISO to DVD/USB are available at the end of this script.
###

### This variable tells PowerShell to stop if an error occurs.
$ErrorActionPreference = "Stop";

###
### Import the modules necessary for DaRT Image creation.
###

Import-Module "Dism"
Import-Module "Microsoft.Dart"

###
### Specifies where the Windows media is located and where the ISO and WIM files will be saved.
### These can be changed as necessary.
###

$WinMediaPath = "D:\";                                                          ### This is the path of the Windows media.
$DestinationWimPath = "C:\Users\Administrator\Desktop\DaRT10\x64\boot.wim";     ### Specify where the WIM file will be saved.
$DestinationIsoPath = "C:\Users\Administrator\Desktop\DaRT10\x64\DaRT10.iso";   ### Specify where the ISO will be saved.

###
### These variables are used to specify temporary and output directories based on the paths above.
###

$WimParentPath = (Split-Path -Path "$destinationWimPath" -Parent);              ### Specify the directory where the DaRT WIM file will be saved.
$IsoParentPath = (Split-Path -Path "$destinationIsoPath" -Parent);              ### This is the directory where the DaRT ISO file will be saved.
$TempMountPath = "$([System.IO.Path]::GetTempPath())\DaRT8Mount_$(Get-Random)"; ### Specify the temporary directory used to mount the Windows image.

###
### Prepare the Windows image.
###

### Verify that the output directories exist.
New-Item -Path $WimParentPath -Type Directory -Force
New-Item -Path $IsoParentPath -Type Directory -Force
New-Item -Path $TempMountPath -Type Directory -Force

### Create a copy of the WIM and remove the read-only attribute.
### The WIM file will be the resulting DaRT image.
Copy-Item "$WinMediaPath\sources\boot.wim" $DestinationWimPath -Force
Set-ItemProperty $DestinationWimPath -Name IsReadOnly -Value $false

### Mount the bootable image within the WIM file (normally index 2).
Mount-WindowsImage -ImagePath $DestinationWimPath -Path $TempMountPath -Index 2

###
### Add additional drivers to the image.
###

### The following is an example of how to add additional drivers to the image. 
### Specify the actual path to a driver's INF file and uncomment the following statement.
# Add-WindowsDriver -Path $TempMountPath -Driver "c:\example\path\to\drivers.inf" -ForceUnsigned

###
### Installs the specified WinPE package(s) into the image.
###

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-EnhancedStorage.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WinReCfg.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FMAPI.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-WinRE.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-EnhancedStorage_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WinReCfg_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFx.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFx_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-DismCmdlets.cab"

Add-WindowsPackage -Path $TempMountPath -PackagePath "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-DismCmdlets_en-us.cab"

###
### Add the DaRT tools to the image.
### The New-DartConfiguration cmdlet is used to specify how the DaRT image is configured.
### Modify this statement to configure how the DaRT tools will be applied to the image.
###

$config = New-DartConfiguration -AddComputerManagement -AddCrashAnalyzer -AddDiskCommander -AddDiskWipe -AddExplorer -AddFileRestore -AddFileSearch -AddHotfixUninstall -AddLocksmith -AddRegistryEditor -AddSfcScan -AddSolutionWizard -AddTcpConfig
$config | Set-DartImage -Path $TempMountPath

###
### Perform any manual user-specific customizations here.
###

# Read-Host -Prompt "Script is paused for any manual customization. Press ENTER to continue"

### Save the changes to the WIM file by dismounting the image.
Dismount-WindowsImage -Path $TempMountPath -Save

### Create a bootable DaRT ISO.
Export-DartImage -IsoPath $DestinationIsoPath -WimPath $DestinationWimPath

### The following is an example of how to burn the ISO to a writeable CD/DVD.
### Specify the correct drive letter and uncomment the statement to burn an ISO.
# Copy-DartImage -IsoPath $DestinationIsoPath -Drive "G:" -Type DVD

### The following is an example of how to format and copy the ISO to a USB drive.
### Specify the correct drive letter and uncomment the statement to create a bootable USB.
# Copy-DartImage -IsoPath $DestinationIsoPath -Drive "G:" -Type USB

### Removes all temporary files.
Remove-Item $TempMountPath -Force -Recurse