2013-05-09 44 views
16

Mount-DiskImageコマンドでISO Iをマウントしています。しかし、私はマウントされたディスクイメージのドライブ文字を取得する方法がわかりません。私は$mountResult = Mount-DiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso -PassThruを試してみる。いずれかのドライブ文字を返しません後Mount-DiskImageでマウントされたISOのドライブ文字を取得するには

PS C:\Windows\system32> $mountResult | fl * 


Attached    : False 
BlockSize    : 0 
DevicePath   : 
FileSize    : 110100480 
ImagePath    : D:\ISOs\clonezilla-live-1.2.12-10-i486.iso 
LogicalSectorSize  : 2048 
Number    : 
Size     : 110100480 
StorageType   : 1 
PSComputerName  : 
CimClass    : ROOT/Microsoft/Windows/Storage:MSFT_DiskImage 
CimInstanceProperties : {Attached, BlockSize, DevicePath, FileSize...} 
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties 

PS C:\Windows\system32> $mountResult | select -ExpandProperty CimSystemProperties | fl * 


Namespace : ROOT/Microsoft/Windows/Storage 
ServerName : ECHO-BASE 
ClassName : MSFT_DiskImage 
Path  : 

Get-DiskImageD:\ISOs\clonezilla-live-1.2.12-10-i486.isoを呼び出す:下図のように返された情報はいずれも、ドライブ文字ではありません。

ドライブレターはどのように入手できますか?

答えて

32

これを試してみてください:

$mountResult = Mount-DiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso -PassThru 
$mountResult | Get-Volume 

これは、ISOは、他の情報と一緒に割り当てられていることを手紙どのドライブを返します - そこからの出力を解析するだけですが。

EDIT: これは単なるドライブ文字が返されます:これは動作するように

$driveLetter = ($mountResult | Get-Volume).DriveLetter

+0

Ahhhhhhhhhhhhhhhhhhhh 1 – x0n

+0

@ParrotMacあなたは、特定のドライブ文字を割り当てるための方法を知っていますか? – Fnord

+0

@Fnordおそらくこれは助けることができますか? [単純なPowerShellコマンドを使用してドライブ文字とラベルを変更する](http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/14/change-drive-letters- and-labels-via-a-simple-powershell-command.aspx) – ParrotMac

3

私が見つけたの

$ beforeMount =(ゲット・ボリューム).DriveLetter

$ mountResult =マウント、ディスクドライブ仮想化ソフト$ imagePath

$ setuppath =($ beforeMount(Get-Volume)。ドライブレター-PassThru)+ ":\"

1

FYI同じイメージを再度マウントする際に問題が発生したため、小さな変更を加えました。イメージがマウントされていてもボリュームを与えていない場合は、すでにマウントされているかどうかを確認します。

$ImagePath= " " ## Path of ISO image to be mounted 
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter 
IF (!$ISODrive) { 
Mount-DiskImage -ImagePath $ImagePath -StorageType ISO 
} 
$ISODrive = (Get-DiskImage -ImagePath $ImagePath | Get-Volume).DriveLetter 
Write-Host ("ISO Drive is " + $ISODrive) 
1

私はそれがここに属しているかどうか全くわからないが、 質問を考えると、私はそれがないと言うでしょう答え。

イタリック体:コマンドプロンプトからコピーしました。

仮定

我々は通常、(私たちはDISM.EXEを持っている.WIMと.SWMのような(仮想)私たちはのDiskpart.exeを持っているディスク、またはインストールファイルを、マウントについて話すの取付について話

IMAGEX.EXE)、または 'NTLite'のようなサードパーティのソフトウェア、または.ISOのようなCDやDVDのイメージに関するものです。私が知る限り、.ISOファイルは、第三者のソフトウェアを使用しない限り、常に読み取り専用でマウントされます。そのような.ISOファイルは最も柔軟性のないファイルなので、私はこの質問を、その時点で1つ以上のコピーコマンド、findコマンド、それらの各々は、ソースファイルへの明確なパスに依存し、必ずしもマウントされたイメージへのパスではない。

たpowershell.exeは、「GUI」を開くことができませんので、一つの可能​​な解決策#

c:\windows\system32>powershell.exe mount-diskimage -imagepath 
"d:\blah\vlah.iso" -confirm -passthru 

Attached   : True 
Blocksize   : 0 
Devicepath   : \\.\CDROM0 <<== Object of interest, since COPY.EXE 
Filesize   : 4586569728   won't recurse and XCOPY.EXE 
Imagepath   : "d:\blah\vlah.iso" won't accept it as a valid 
Logicalsectorsize : 2048     path, however ROBOCOPY.EXE 
Number    : 0     will accept it and then it does 
Size    : 4586569728  do what I demand of it, copy the 
Storagetype  : 1     contents of the mounted .ISO 
Pscomputername  : 

xcopy \\.\CDROM0\*.* C:\new /h /i /c /k /e /r /y /f /b 
Invalid drive specification 
0 File(s) copied 

Robocopy \\.\CDROM0 C:\new /E /ZB /COPYALL /256 /R:3 /W:1 /X /V /TS 
/FP /NP /ETA /LOG:w:\ROBO.LOG /TEE /NJH 

は間違いなく、この組み合わせは非常にすべてのフィードバック(、質問に答えると、問題を解決するための両方に最も効果的です'stdout'と 'stderr'が許可されると、1つのウィンドウに表示されます)、あなたのファイルに不必要なドライブ文字を取得したり、時間の無駄を命令したりする必要がある '標準出力'を出力します。私が正しいとすれば、私はそれをチェックしていないけれども、「デバイスパス」は常に同じであり、それは私のコンピュータの場合だけであるかどうかは言えません。たpowershell.exe経由ザ・COMMAND PROPMT

問題の一つの使用に関わる

号の私と私のバッチファイルでほとんどのため、しかし、それは私のコンピュータかもしれませんが、より良いたpowershell.exeのコマンドを繰り返します時刻'添付:偽'は、マウント()とイメージのマウント解除(真の)の両方の最初の試行の結果です。これは、私のバッチファイルの実行でエラーが発生します。'システムは指定されたパスを見つけることができません。'これは、別のコマンドが意図した「マウントポイント」とイメージを参照する瞬間に続きます。

補遺は、05 - 2月 - 2017:。

2017年2月5日:私は使用しての解決策は、\ \ CDROMXが、それ以外の場合は、次のメッセージで失敗することがあり1が追加されたときに/ 256のみ動作するように思われることが分かりました01:11:15 ERROR 53(0x00000035)ソースディレクトリ\。\ CDROM0 \ にアクセスしていますネットワークパスが見つかりませんでした。

これは人々に役立つことを願っています。これは、メモ帳の長い行設定に従えば、すでに助けてくれました.72では、stackoverflowで醜いレイアウトが作成されます。

0

これが私の仕事:

$beforeMount = (Get-Volume).DriveLetter 
$imagePath = 'C:\dsc\en_windows_server_2016_x64_dvd_9718492.iso' 
$mountResult = Mount-DiskImage $imagePath 
$afterMount = (Get-Volume).DriveLetter 
$setuppath = "$(($afterMount -join '').replace(($beforeMount -join ''), '')):\" 
関連する問題