51 lines
1.2 KiB
PowerShell
51 lines
1.2 KiB
PowerShell
|
#Requires -Modules 'dism'
|
||
|
Param(
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$ImageName,
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$SourceFolder,
|
||
|
[Parameter(Mandatory)]
|
||
|
[string]$DestinationFile
|
||
|
)
|
||
|
|
||
|
$StartJobSplat = @{
|
||
|
ArgumentList = $ImageName, $SourceFolder, $DestinationFile
|
||
|
ScriptBlock = {
|
||
|
Param(
|
||
|
$ImageName,
|
||
|
$SourceFolder,
|
||
|
$DestinationFile
|
||
|
)
|
||
|
|
||
|
$NewWindowsImageSplat = @{
|
||
|
Name = $ImageName
|
||
|
CapturePath = $SourceFolder
|
||
|
ImagePath = $DestinationFile
|
||
|
Verify = $True
|
||
|
}
|
||
|
New-WindowsImage @NewWindowsImageSplat
|
||
|
}
|
||
|
}
|
||
|
$Job = Start-Job @StartJobSplat
|
||
|
|
||
|
While ($Job.State -eq 'Running') {
|
||
|
$GetItemSplat = @{
|
||
|
Path = $DestinationFile
|
||
|
ErrorAction = 'SilentlyContinue'
|
||
|
}
|
||
|
$OutputFile = Get-Item @GetItemSplat
|
||
|
If ($OutputFile) {
|
||
|
Write-Host "Export in progress ... $($OutputFile.FullName); Size: $('{0:n2}' -f ($OutputFile.Length / 1MB))MB"
|
||
|
}
|
||
|
Else {
|
||
|
Write-Host "Export initiating ... "
|
||
|
}
|
||
|
|
||
|
$StartSleepSplat = @{
|
||
|
Seconds = 30
|
||
|
}
|
||
|
Start-Sleep @StartSleepSplat
|
||
|
}
|
||
|
|
||
|
Receive-Job $Job
|
||
|
Remove-Job $Job
|