PowerShell /プログラムでISOをマウントするにはどうすればよいですか?


回答:


46

コマンドプロンプトからISOをマウントする(Windows 8/2012以降のみ)

コマンドプロンプトを開いているときにISOをマウントする必要がある場合は、次のコマンドを実行します。

PowerShell Mount-DiskImage

これにより、PowerShellコマンドレットが呼び出されます。マウントするISOのパスの入力を求められます。完了したら、最後の1つを空白のままにしてを押しEnterます。

Mount-DiskImageコマンドレットの実行

多田!マウントされています:

多田! マウントされています—「リムーバブルストレージを備えたデバイス」

ISOをマウント解除する

PowerShellからISOをマウント解除するにDismount-DiskImageは、プロンプトを実行します。イメージパスではなく、頭の上のドライブ文字だけがわかっている場合は、次のコマンドを使用します。

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

このコマンドは、指定したドライブを取得し、ディスクイメージを見つけて、マウントを解除します。

ISOのマウント解除後の「リムーバブルストレージを備えたデバイス」

複数のISOのマウントとドライブ文字の表示

-PassThruフラグを使用して、コマンドに渡されたデータを保存することもできます。いくつかのISOをマウントし、ドライブ文字を表示し、ドライブの1つでファイルを実行してから、すべてのISOをマウント解除します。

ISOをマウントする

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

foreachループを使用してマウントされた各ISOのボリューム情報を表示する

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

リストJドライブ

 ls J:\

ファイルを開く

 start wubi.exe

foreach / Get-Volumeおよびlsの出力

ISOのマウントを解除するには、次のコマンドを使用します。

 Dismount-DiskImage $MountedISOs.ImagePath

ISOのテスト

ISOがアタッチされ、実際にISO(vs. VHD)かどうかをチェックする単純なスクリプトを作成するには-PassThru、オブジェクトを一時的に保存しGet-DiskImage、DiskImageオブジェクトのステータスを更新するコマンドを使用します。これにより、Attachedプロパティが更新されます。StorageTypeプロパティは、ファイルがそのファイルの拡張子に応じてISOまたはVHDであるかどうかを教えてくれます。

<code> -PassThru </ code>および<code> Get-DiskImage </ code>を使用する

StorageTypeISOは、ここで1を返しますVHDは2、のはの出力です$UbuntuISO
以下は、<code> $ UbuntuISO </ code>の出力です。

これは、$tempVHDをマウントした後の出力です(Mount-DiskImageVHDもマウントできます!)
VHDをマウントした後の<code> $ temp </ code>の出力

コマンドはヒッチなしで実行されAttachedますがFalse、上記のプロパティはであることに注意してくださいMount-DiskImage

$UbuntuISO変数も更新されたままにならないことに注意してください。
<code> $ UbuntuISO </ code>変数は更新されたままになりません


Technet:Mount-DiskImage

Technet:Dismount-DiskImage


6
くそー、PowerShell Windows 8のこれらすべての新しいコマンドレットはくすぐり始めます。
sinni800

1
コマンドを使用してイメージを簡単にマウントできますC:\>explorer.exe imagepath。ここではPSは必要ありませんが、アンマウントするにはPSが必要です。
avirk

3
すべてWindows 8の内部ですか?他のプログラムをインストールする必要はありませんか?
シーラッシュ

2
+1 本当にとても素敵です!これはまさに Win8で見つけたいと思っていたもので、最終的にここの答えの最後に追加できましたが、あなたは私をトラブルから救いました。PSスキルを磨く必要があります。:)編集:内部をテストし、ファイルがISOかVHDか、完全にサポートされていないものかを報告するコマンドレットはありますか?または、おそらくMount-DiskImageの戻り値をテストして、コードをそれに応じて分岐できるようにする方法でしょうか?
カラン

1
@Karanはついに= Dを理解することに取り掛かりました。それは勇気をテストするつもりはありません。しかし、PowerShellエラー処理に飛び込むことなく、マウントされているかどうかとISOとVHDを知らせてくれます。
タナーフォークナー

3

通常、コマンドラインを使用してこれを行うには、非インタラクティブな方法が必要です。-ImagePathこれを行うには、スイッチを使用します。

したがって、コマンドは次のとおりです。

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

スペースやその他の特殊文字を含む絶対パスを引用する場合は、引用符をエスケープする必要があることに注意してください。

ISOイメージのマウントを解除するには、忘れずに引用してください。

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

最初のケースではコマンドを引用する必要はありませんでしたが、|パイプはコマンドラインにPowerShell(PowerShellが自動的に追加するのではなく、コマンドラインコンテキストにあると判断させるため)単一のコマンドに連結します)。

また、スペルがDismount-DiskImage正しいことを確認してください(kDismountでは不可)。


-Commandスイッチは何をするもので、なぜ非対話型で実行するのですか?
タナーフォークナー

1
おっと、(単にGUIを使用することができる人)チャンスは、スクリプトはそれをやってというよりも人間されているので、非対話、自動的にそれを行うように見えますが、 -コマンドを必要としなかった
ronalchn

ファイル名による単純なマウント解除も忘れないでくださいPowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
。– juanitogan

現在のdirマウントの場合:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.