Come posso montare un ISO tramite PowerShell / a livello di codice?


Risposte:


46

Montare un ISO dal prompt dei comandi (solo Windows 8/2012 e versioni successive)

Se ti trovi al prompt dei comandi e devi montare un ISO, esegui il comando seguente:

PowerShell Mount-DiskImage

Ciò invocherà un cmdlet di PowerShell. Ti verrà richiesto il percorso degli ISO che desideri montare. Quando hai finito, lascia l'ultimo vuoto e premi Enter.

in esecuzione il cmdlet Mount-DiskImage

Tada! È montato:

Tada!  È montato - "Dispositivi con memoria rimovibile"

Smontare un ISO

Per smontare un ISO dall'esecuzione di PowerShell Dismount-DiskImagee seguire il prompt. Se conosci solo la lettera di unità nella parte superiore della testa e non il percorso dell'immagine, utilizza questo comando:

Get-Volume [Drive Letter] | Get-DiskImage | Dismount-DiskImage

Questo comando prenderà l'unità specificata, troverà l'immagine del disco e la smonterà.

"Dispositivi con memoria rimovibile" dopo aver smontato ISO

Montaggio di più ISO e visualizzazione di lettere di unità

È inoltre possibile utilizzare il -PassThruflag per memorizzare i dati passati al comando. Montiamo alcuni ISO, visualizziamo le loro lettere di unità, eseguiamo un file su una delle unità e quindi smontiamo tutte le ISO.

Montare gli ISO

 $MountedISOs=Mount-DiskImage -PassThru D:\Downloads\Ubuntu.iso,D:\Downloads\Windows8.iso,D:\Downloads\Server2012.iso

Visualizza le informazioni sul volume per ogni ISO montato usando un foreachloop

 foreach($iso in $MountedISOs){Get-Volume -DiskImage $iso}     

Elenco J drive

 ls J:\

Apri un file

 start wubi.exe

output di foreach / Get-Volume e ls

Per smontare gli ISO, utilizzare il seguente comando:

 Dismount-DiskImage $MountedISOs.ImagePath

Test dell'ISO

Per creare uno script semplice che controlli se l'ISO è collegato e in realtà è un ISO (rispetto a un disco rigido virtuale) che mi piace utilizzare -PassThruper archiviare temporaneamente l'oggetto e utilizzare il Get-DiskImagecomando per aggiornare lo stato dell'oggetto DiskImage. Questo aggiornerà la Attachedproprietà. La StorageTypeproprietà ti dirà se il file è ISO o VHD in base alla sua estensione.

usando <code> -PassThru </code> e <code> Get-DiskImage </code>

Il valore StorageTypedi un disco rigido virtuale è 2, dove un ISO restituirà 1. Ecco l'output di $UbuntuISO:
Ecco l'output di <code> $ UbuntuISO </code>

Questo è l'output di $tempdopo aver montato un VHD: ( Mount-DiskImagepuò anche montare VHD!)
l'output di <code> $ temp </code> dopo aver montato un disco rigido virtuale

Si noti che la Attachedproprietà sopra è False, nonostante il Mount-DiskImagecomando venga eseguito senza intoppi.

Tieni presente che la $UbuntuISOvariabile non rimarrà aggiornata neanche:
la variabile <code> $ UbuntuISO </code> non rimane aggiornata


Technet: Mount-DiskImage

Technet: Dismount-DiskImage


6
Dannazione, con tutti quei nuovi cmdlet in PowerShell Windows 8 inizia a solleticare.
sinni800

1
Possiamo facilmente montare l'immagine tramite il comando C:\>explorer.exe imagepath, qui non abbiamo bisogno di PS ma per smontare lì abbiamo bisogno di PS.
aprile

3
È tutto dentro Windows 8? Voglio dire, non è necessario installare altri programmi ???
Searush,

2
+1 Davvero molto bello! Questo era esattamente quello che speravo di trovare in Win8 in modo da poterlo aggiungere alla fine della mia risposta qui , ma mi hai salvato il problema. Ho davvero bisogno di iniziare a migliorare le mie capacità di PS. :) Modifica: esiste un cmdlet per testare le viscere e segnalare se il file è un ISO o VHD o qualcos'altro interamente non supportato? O forse un modo per testare il valore di ritorno di Mount-DiskImage forse in modo che il codice possa essere ramificato di conseguenza?
Karan,

1
@Karan Finalmente sono riuscito a capire che = D Non metterà alla prova le viscere, e francamente penso che sia eccessivo. Ma ci farà sapere se è montato e un ISO vs VHD senza immergersi nella gestione degli errori di PowerShell.
Tanner Faulkner,

3

Normalmente, se si desidera farlo tramite la riga di comando, è necessario un metodo non interattivo. Ti consigliamo di utilizzare l' -ImagePathinterruttore per farlo.

Pertanto, il comando è:

PowerShell Mount-DiskImage -ImagePath \"C:\AbsolutePathTo\Image.iso\"

Ricorda che se citi il ​​percorso assoluto (per contenere spazi e altri caratteri speciali), devi evitare le virgolette.

Per smontare un'immagine iso, ricordati di citarla:

PowerShell "Get-Volume G | Get-DiskImage | Dismount-DiskImage"

Si noti che non è stato necessario citare il comando nel primo caso, ma nel secondo caso, poiché la |pipe farà sì che la riga di comando pensi che si trovi nel contesto della riga di comando, anziché argomenti di aggiunta PowerShell(a cui PowerShell automaticamente si concatena in un singolo comando).

Assicurati anche di scrivere Dismount-DiskImagecorrettamente (no kin Dismount).


Che cosa fa l'opzione -Command e perché funziona in modo non interattivo?
Tanner Faulkner,

1
oops, non avevo bisogno di -Comando, sembra farlo automaticamente, non interattivo perché è probabile che uno script lo stia facendo piuttosto che un essere umano (che può semplicemente usare la GUI)
ronalchn

Non dimenticare anche il più semplice smontaggio per nome file:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

Per i montaggi attuali:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.