web-dev-qa-db-ja.com

PowerShellを使用して、またはプログラムでISOをマウントするにはどうすればよいですか?

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

これは 質問 オリジナル リビジョン Windows 8でPowerShellを介してISOをマウントすることが可能かどうか疑問に思いました

28
Tanner Faulkner

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

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

PowerShell Mount-DiskImage

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

running Mount-DiskImage cmdlet

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

Tada! It’s mounted — “Devices with Removable Storage”

ISOをマウント解除する

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

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

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

“Devices with Removable Storage” after dismounting 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

output of foreach/Get-Volume and ls

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

 Dismount-DiskImage $MountedISOs.ImagePath

ISOのテスト

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

using <code>-PassThru</code> and <code>Get-DiskImage</code>

VHDのStorageTypeは2で、ISOは1を返します。これが$UbuntuISOの出力です。
Here's the output of <code>$UbuntuISO</code>

これは、VHDをマウントした後の$tempの出力です:(Mount-DiskImageはVHDもマウントできます!)
the output of <code>$temp</code> after mounting a VHD

上記のAttachedプロパティはFalseですが、Mount-DiskImageコマンドは問題なく実行されています。

$UbuntuISO変数も更新されないことに注意してください。
the <code>$UbuntuISO</code> variable does not stay updated


Technet:Mount-DiskImage

Technet:Dismount-DiskImage

46
Tanner Faulkner

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

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

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

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

Isoイメージをマウント解除するには、必ず引用してください:

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

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

また、Dismount-DiskImage正しく(Dismountにkはありません)。

3
ronalchn