Visualizzazione post con etichetta install.swm. Mostra tutti i post
Visualizzazione post con etichetta install.swm. Mostra tutti i post

lunedì 1 maggio 2023

Windows Quick Tip: Visualizzare la versione, l'edizione e la build di Windows dal file ISO o WIM

In questo articolo approfondiremo quanto già visto nell'articolo Windows Quick Tip: Visualizzare informazioni su un file WIM (Windows Imaging) mostrando come utilizzare DISM e PowerShell per scoprire quali versioni, edizioni, build, language pack di Windows sono presenti all'interno di un file ISO o WIM. Se il nome di un file ISO (o il nome del supporto di installazione) non contiene una versione e una build, è difficile sapere quale versione di Windows contiene. In questi casi è possibile montare il file ISO contenente l'immagine di installazione di Windows e recuperare tali informazioni dal file install.wim.

Una volta montato il file ISO (o inserito il supporto di installazione) accedere alla cartella sources e individuare il file di installazione contenente l'immagine di Windows. Il file si chiama install e può avere una delle seguenti estensioni:
  • install.wim. WIM è un formato standard di immagine di installazione di Windows.
  • install.esd. ESD è un file immagine compresso.
  • install.swm. SWM viene utilizzato se si desidera dividere un'immagine WIM di grandi dimensioni in più file di dimensioni non superiori a 4 GB, in modo da inserirli nel file system FAT32 se si crea una chiavetta USB di installazione.
Prendere nota del nome del file e del suo percorso, avviare il prompt dei comandi come amministratore ed eseguire il seguente comando
DISM /Get-WimInfo /WimFile:"X:\sources\install.wim"
sostituendo X:\sources\Install.wim con nome del file, comprensivo del percorso, individuato in precedenza.

Verranno visualizzate le informazioni relative alla versione di Windows contenuta nel file. Nel caso si tratti di un ISO multi-edition, verrà visualizzato un elenco delle edizioni disponibili (Education, Home, Enterprise, Pro, ecc.) come mostrato in FIG 1.
Immagine di Windows multi-edition
FIG 1 - Immagine di Windows multi-edition

Ogni edizione è contrassegnata da un indice utilizzabile per ottenere informazioni più dettagliate. Per visualizzare maggiori informazioni (come build e lingue disponibili) su un'edizione specifica presente in elenco, è possibile indicarla tramite l'indice e l'opzione /index aggiunta al comando DISM visto in precedenza. Ad esempio, per visualizzare le informazioni sull'edizione contrassegnata dall'indice 5, basterà eseguire il comando
DISM /Get-WimInfo /WimFile:"X:\Sources\Install.wim" /index:5
DISM multi-edition, index
FIG 2 - DISM multi-edition, index

L'operazione sopra descritta può essere automatizzata tramite un semplice script PowerShell
 #Indicare il file ISO contenente l'immagine di Windows (ad es. d:\win.iso)  
 $imagePath = (Read-Host -Prompt "Indicare il file ISO contenente l'immagine di Windows")  
 #Verifico se il file indicato esiste  
 If (Test-Path -Path $imagePath){  
      #Se il file esiste provo a montarlo  
      $mountResult = Mount-DiskImage $imagePath -PassThru  
      #Recupero la lettera di unità con cui viene identificata l'immagine montata  
      $driveLetter = "$(($mountResult | Get-Volume).DriveLetter):"  
      #Visualizzo le versioni di Windows contenute nel file install.wim  
      Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim"  
      #Esegue l'unmount dell'immagine  
      Dismount-DiskImage $mountResult.ImagePath  
 }  
 else{  
      #Il file specificato non è stato trovato  
      write-host("Il file specificato non esiste!")  
 }  
Script PowerShell per la visualizzazione delle edizioni di Windows presenti nell'immagine
FIG 3 - Script PowerShell per la visualizzazione delle edizioni di Windows presenti nell'immagine

Con alcune modifiche possiamo generare un report che visualizza i dettagli di ciascuna edizione di Windows presente nell'immagine
 $Report = @()  
 #Indicare il file ISO contenente l'immagine di Windows (ad es. d:\win.iso)  
 $imagePath = (Read-Host -Prompt "Indicare il file ISO contenente l'immagine di Windows")  
 #Verifico se il file indicato esiste  
 If (Test-Path -Path $imagePath){  
      #Se il file esiste provo a montarlo  
      $mountResult = Mount-DiskImage $imagePath -PassThru  
      #Recupero la lettera di unità con cui viene identificata l'immagine montata  
      $driveLetter = "$(($mountResult | Get-Volume).DriveLetter):"  
      #Visualizzo le versioni di Windows contenute nel file install.wim  
      $WinImages = Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim"  
      #Per ogni edizione di Windows contenuta nell'immagine  
      Foreach ($WinImage in $WinImages){  
           #Recupera informazioni da inserire nel report  
           $curImage=Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim" -Index $WinImage.ImageIndex  
           $objImage = [PSCustomObject]@{  
                ImageIndex = $curImage.ImageIndex  
                ImageName = $curImage.ImageName  
                Version = $curImage.Version  
                Languages=$curImage.Languages  
                Architecture =$curImage.Architecture  
           }  
           $Report += $objImage  
      }  
      #Esegue l'unmount dell'immagine  
      Dismount-DiskImage $mountResult.ImagePath  
      #Visualizza il report  
      $Report | Out-GridView  
 }  
 else{  
      #Il file specificato non è stato trovato  
      write-host("Il file specificato non esiste!")  
 }  
Report edizioni di Windows contenute nell'immagine
FIG 4 - Report edizioni di Windows contenute nell'immagine