V tomto příspěvku bych se s Vámi rád podělil o svůj PowerShell modul, který prostřednictvím nástroje DSM umožňuje vytvářet datové Archivy ve formátu ESD a rovněž již Existující ESD soubory extrahovat do složky.
Infomrace je schopen číst i o WIM souborech a vlastně nic nebrání vytvoření souboru ve formátu WIM místo ESD, rozbalení WIM pak sice zvládnuto je, ale stojí hodně času.
Pro stažení modulu a zobrazení jeho zdrojového kódu čtěte dále Stažení modulu ve formátu psm1
Zdrojový kód modulu:
@{
Author = ‚Petrásek Jan‘
CompanyName = ‚elektrotechnika.vesele.info‘
Copyright = ‚Petrásek ©2020‘
Description = ‚ Pomocí nástroje DISM umožňuje zobrazit informace o daném ESD souboru. Umí extrhovat daný index či název do zadané složky. Pokud se nazadá název nebo index,
bude do zadané složky extrahován index 1 daného souboru.
Hlavním úkolem je tvorba ESD souborů ze zadané složky, do archivu jsou samozřejmně zahrnuty všechny podložky a jejich obsah. Komprese archivu je maximální možná.
Název indexu je možné zadat v podobě volitelného parametru.
Není podporována komprese samostatných souborů ani více indexové archivy či popis jednotlivých indexů. Informace dokáže vypsat i o Wim souboru.‘
PowerShellVersion = ‚5.1‘ #minimální verze PowerShellu
CLRVersion = ‚5.1‘ #minimální verze příkazového runtimeu
ModuleVersion = ‚1.0‘
ModulToProcess = ‚folder2ESD.psm1‘
AliasesToExport = ‚*‘ #oddělujeme čárkou
FunctionsToExport =’*‘
}
Set-Alias -name F2ESD -value Convert-Folder2ESD
function Convert-Folder2ESD
{
<#
.Synopsis
Convert-Folder2ESD
.DESCRIPTION
Pomocí nástroje DISM umožňuje zobrazit informace o daném ESD souboru. Umí extrhovat daný index či název do zadané složky. Pokud se nazadá název nebo index,
bude do zadané složky extrahován index 1 daného souboru.
Hlavním úkolem je tvorba ESD souborů ze zadané složky, do archivu jsou samozřejmně zahrnuty všechny podložky a jejich obsah. Komprese archivu je maximální možná.
Název indexu je možné zadat v podobě volitelného parametru.
Není podporována komprese samostatných souborů ani více indexové archivy či popis jednotlivých indexů.
.EXAMPLE
Convert-Folder2ESD -rezim komprese -soubor I:\2016-2017.esd -slozka I:\2016-2017 -nazev Fotokrouzek2016-2017
Do souboru I:\I:\2016-2017.esd zabalí obsah složky I:\2016-2017 na index 1 pod jménem indexu Fotokrouzek2016-2017
.EXAMPLE
Convert-Folder2ESD -rezim dekomprese -soubor I:\Drivers.ESD -slozka I:\Ovladace
Do složky I:\Ovladace vybalí obsah archivu I:\Drivers.esd
.EXAMPLE
Convert-Folder2ESD -rezim info -soubor I:\Drivers.ESD -slozka I:\Ovladace
DZobrazí dostuné informace o archyvu I:|Drivers.esd
.EXAMPLE
Convert-Folder2ESD -rezim dekomprese -soubor I:\Windows\Souces\Install.esd -slozka I:\Win10Pro -index 5
Extrahuje instalačního souboru offline podobu obrazu Windows 10 Pro, které jsou na indexu 5 do složky C:\Win10Pro
.EXAMPLE
Convert-Folder2ESD -rezim dekomprese -soubor I:\2016-2017.esd -slozka I:\2016-2017 -nazev Fotokrouzek2016-2017
Extrahuje z archivu I:\2016-2017.esd index se jménem Fotokrouzek2016-2017 do složky I:\2016-2017
.NOTES
Verze: 1.0
Autor: Petrásek Jan
Autor nenese žádnou odpovědnost za případnou ztrátu či poškození dat!
Všechna práva vyhrazena
©2020
.FUNCTIONALITY
Tvorba a extrahování ESD
#>
param(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)] [validateSet(‚Info‘, ‚dekomprese‘, ‚komprese‘)] [Alias(‚r‘)]
[string]$rezim,
[Parameter(Mandatory=$true, ValueFromPipeline=$true)] [Alias(‚f‘)]
[string]$soubor,
[Parameter(Mandatory=$true, ValueFromPipeline=$true)] [Alias(‚d‘)]
[string]$slozka,
[Parameter(Mandatory=$false, ValueFromPipeline=$true)] [Alias(‚name‘, ‚n‘)]
[string]$nazev,
[Parameter(Mandatory=$false, ValueFromPipeline=$true)] [Alias(‚i‘)]
[string]$index
)
Switch($rezim)
{
info{
Dism.exe /Get-ImageInfo /ImageFile:$soubor
}
komprese {
if($nazev -ne „“)
{
Dism /Capture-Image /ImageFile:$soubor /Compress:max /CheckIntegrity /CaptureDir:$slozka /Name:$nazev
}else{
Dism /Capture-Image /ImageFile:$soubor /Compress:max /CheckIntegrity /CaptureDir:$slozka /Name:$soubor
}
Write-Host „“
Write-Host „Komprese dokončena“ -ForegroundColor Green
}
dekomprese{
IF(!(Test-Path ‚C:\temp\ESD2Folder‘))
{
New-Item -Path ‚C:\temp\ESD2Folder‘ -ItemType Directory
}
if($nazev -ne „“){
dism /export-image /SourceImageFile:$soubor /SourceName:$nazev /DestinationImageFile:C:\temp\ESD2Folder.wim /Compress:max /CheckIntegrity
Dism /Mount-Image /ImageFile:C:\temp\ESD2Folder.wim /MountDir:C:\temp\ESD2Folder /Name:$nazev
cd C:\temp\ESD2Folder
Copy-Item C:\temp\ESD2Folder\* -Recurse $slozka
cd $home
Dism /Unmount-Image /MountDir:C:\temp\ESD2Folder /discard
Remove-Item -Path C:\temp\ESD2Folder.wim -Force
Remove-Item -Path C:\temp -Recurse -Force
Write-Host „“
Write-Host „Extrahování dat dokončeno“ -ForegroundColor Green
}elseif($index -ne „“)
{
dism /export-image /SourceImageFile:$soubor /SourceIndex:$index /DestinationImageFile:C:\temp\ESD2Folder.wim /Compress:max /CheckIntegrity
Dism /Mount-Image /ImageFile:C:\temp\ESD2Folder.wim /MountDir:C:\temp\ESD2Folder /Index:$index
cd C:\temp\ESD2Folder
Copy-Item C:\temp\ESD2Folder\* -Recurse $slozka
cd $home
Dism /Unmount-Image /MountDir:C:\temp\ESD2Folder /discard
Remove-Item -Path C:\temp\ESD2Folder.wim -Force
Remove-Item -Path C:\temp -Recurse -Force
Write-Host „“
Write-Host „Extrahování dat dokončeno“ -ForegroundColor Green
}else{
dism /export-image /SourceImageFile:$soubor /SourceIndex:1 /DestinationImageFile:C:\temp\ESD2Folder.wim /Compress:max /CheckIntegrity
Dism /Mount-Image /ImageFile:C:\temp\ESD2Folder.wim /MountDir:C:\temp\ESD2Folder /Index:1
cd C:\temp\ESD2Folder
Copy-Item C:\temp\ESD2Folder -Recurse $slozka
cd $home
Dism /Unmount-Image /MountDir:C:\temp\ESD2Folder /discard
Remove-Item -Path C:\temp\ESD2Folder.wim -Force
Remove-Item -Path C:\tempr -Recurse -Force
Write-Host „“
Write-Host „Extrahování dat dokončeno“ -ForegroundColor Green
}
}
Default{
Write-Host „KONČÍM, chybně neplatná hodnota parametru režim“ -ForegroundColor Red
}
}
}
#Zobrazní nápovědy
man Convert-Folder2ESD -ShowWindow