다음을 통해 공유


Dism split : get pourcent and show progress

Introduction

When you use the command "DISM /Split image" to splti a .wim file into several .swm files, it will take a long time, and this command does not show the percentage or the progress state wich can be cumbersome.

We are going to discover a method using workflows to gain fluidity and time

Solution : 

#declare variable : enter the path for your source 
    $sizedismsource = "p:\sources\install.wim"
#replace dism path with destination to split, and don't forget to add * to calculate all file splited
    $sizedismdestination = "D:\sources\install*.swm"
#get file source size
    $sizesource = "{0:N2} " -f ((gci $sizedismsource | measure Length -s).sum / 1GB)
    $sizesource = $sizesource -replace (",", ".")
     
    #Create a background job with a name in our exemple we have chose (progress-split)
    start-job -name 'progress-split' -scriptblock {dism /split-image /imagefile:$using:sizedismsource  /SWMfile:$using:sizedismdestination /FileSize:3500 }
        
    do {
        
    $result = (get-job 'progress-split').state
        
    $sizedestination = "{0:N2} " -f ((gci $sizedismdestination | measure Length -s).sum / 1GB)
        
    $sizedestination = $sizedestination -replace (",", ".")
        
    $a = 100
        
    $percent = [int] (($a * $sizedestination) / $sizesource)
        
    write-output $percent
     
   if ($result -ne 'completed') {
    sleep -seconds 10
       }
 
    } until ($result -eq 'completed')

write-output "split files is complet"
remove-job 'progress-split'