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

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

サードパーティのプログラムを使用せずに、Windows 8 で PowerShell から ISO イメージをマウントおよびマウント解除するにはどうすればよいですか?

これ質問のオリジナルリビジョンWindows 8 で PowerShell 経由で ISO をマウントできるかどうか疑問に思いました。

答え1

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

コマンド プロンプトで ISO をマウントする必要がある場合は、次のコマンドを実行します。

PowerShell Mount-DiskImage

これにより、PowerShell コマンドレットが呼び出されます。マウントする ISO のパスの入力を求められます。完了したら、最後のパスを空白のままにして、を押します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 (VHD ではなく) であるかどうかを確認する簡単なスクリプトを作成するには、-PassThruオブジェクトを一時的に保存し、Get-DiskImageコマンドを使用して DiskImage オブジェクトの状態を更新します。これにより、Attachedプロパティが更新されます。StorageTypeプロパティは、ファイル拡張子に応じて、ファイルが ISO であるか VHD であるかを示します。

<code>-PassThru</code> と <code>Get-DiskImage</code> を使用する

StorageTypeVHD の は 2 ですが、ISO は 1 を返します。 の出力は次のとおりです$UbuntuISO
<code>$UbuntuISO</code>の出力は次のとおりです。

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

コマンドが問題なく実行されているにもかかわらず、Attached上記のプロパティは であることに注意してください。FalseMount-DiskImage

$UbuntuISO変数も更新されないことに注意してください。
<code>$UbuntuISO</code> 変数が更新されない


Technet: マウントディスクイメージ

Technet: マウント解除-DiskImage

答え2

通常、コマンドライン経由でこれを行う場合は、非対話型の方法が必要です。これを行うには、スイッチを使用します-ImagePath

したがって、正しいコマンドは次のようになります。

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

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

iso イメージをアンマウントするには、必ず引用符で囲んでください。

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

最初のケースではコマンドを引用符で囲む必要はありませんでしたが、2 番目のケースでは引用符で囲む必要があることに注意してください。これは、パイプによって、|コマンド ラインは、追加引数 (PowerShell は自動的に単一のコマンドに連結します) ではなく、コマンド ライン コンテキスト内にあると認識するからですPowerShell

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

関連情報