2013-05-09 11 views
16

ile birlikte monte edilen ISO için sürücü harfini nasıl alabilirim Mount-DiskImage komutuyla bir ISO I bağlayıcısına sahibim. Ancak, takılı disk görüntüsü için sürücü harfini nasıl alacağımı bilmiyorum. $mountResult = Mount-DiskImage D:\ISOs\clonezilla-live-1.2.12-10-i486.iso -PassThru'u deniyorum. ya sürücü harfini dönmez sonraMount-DiskImage

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 çağrılması: Aşağıda gösterildiği gibi döndürülen bilgilerin hiçbiri sürücü harfidir.

Sürücü harfini nasıl alabilirim?

cevap

32

bu deneyin:

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

Bu ISO diğer bilgilerle birlikte atanan mektubu götürmek hangi dönecektir - bu çıktıyı ayrıştırma meselesi var oradan.

DÜZENLEME: Bu SADECE sürücü harfini döndürür: Bu çalışmaya

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

+0

Ahhhhhhhhhhhhhhhhhhhh 1 – x0n

+0

@ParrotMac belirli bir sürücü harfi atamak için bir yol biliyor musunuz? – Fnord

+0

@Fnord belki bu yardımcı olabilir? Monte edin, daha sonra bu sonucu kullanın: [Basit PowerShell Komutuyla Sürücü Mektuplarını ve Etiketlerini Değiştirin] (http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/14/change-drive-letters- ve-etiketleri-yoluyla-bir-basit-powershell-command.aspx) – ParrotMac

3

buldum

$ beforeMount = (Get-Hacim) .DriveLetter

$ mountResult = Dağı-DiskImage $ ImagePath

$ setuppath = (karşılaştırma $ beforeMount (Get-Hacim) .DriveLetter -PassThru) + ": \"

1

FYI Aynı görüntüyü tekrar monte etmekle ilgili bir sorun yaşadım, bu yüzden küçük bir değişiklik yaptım.

$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

Tamamen buraya ait olup olmadığından emin, ama soru ve öyle söyleyebilirim cevapları dikkate değilim.

Italics: COMMAND PROMPT öğesinden kopyalanır.

Varsayımlar

biz genellikle (biz DISM.exe sahip olduğunuz .Wim ve .SWM gibi (sanal) biz diskpart.exe sahip olduğunuz diskleri, ya da yükleme dosyalarını, montaj bahsetmek montaj hakkında konuşmak

IMAGEX.EXE) veya 'NTLite' gibi üçüncü parti yazılımlar veya .ISO gibi CD ve DVD görüntüleri ile ilgilidir. Bildiğim kadarıyla, üçüncü parti yazılımlar kullanılmadıkça, ISO dosyaları her zaman okunabilir. Bu gibi .ISO dosyaları en esnek olmayan dosyalarıdır ve bu nedenle, bir veya daha fazla kopyalama komutu için kaynak dosyaya doğru ve tam bir yol sağlamak için sorulan soru sorulduğunda, bunu bir bulma komutu olarak yazdım. veya bir okuma komutunun her biri, bir kaynak dosyaya iyi tanımlanmış bir yola bağlı olarak, monte edilen görüntünün yolunu değil.

Bir Olası Çözüm #

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 

hem soruya cevap ve PowerShell.EXE bir 'GUI' açılmaz çünkü sorunu çözmek için Tartışılır bu kombinasyon en etkili, (böylece bütün geribesleme 'stdout' ve 'stderr', izin verildiği zaman, tek bir pencerede görünecektir), bize 'stdout' sunarken, bu da dosyanıza gereksiz bir sürücü harfi almanın ve/veya zaman kaybı emrini gerektiriyor. Eğer düzeltildiysem 'devicepath' her zaman aynı olacak, ama ben bunu kontrol etmedim ve bunun sadece benim bilgisayarımda olup olmadığını söyleyemem.

Bir sorun olsa PowerShell.EXE Via KOMUTANLIĞI PROPMT kullanımıyla ilgili

Sayı, benim bilgisayar olabilir, ama daha iyi çünkü benim ve toplu dosyaların çoğu, PowerShell.EXE komutu tekrarlamak times 'Attached: False', her ikisi de, (false), görüntü ile 'unmounting', (true) bağlama ile ilk denemenin sonucudur. Bu benim veya 'Toplu iş dosyası' yürütme bir hataya neden olacak gibi görünüyor: 'Sistem belirtilen yolu bulamıyor.' Bu, başka bir komutun amaçlanan 'bağlama noktası' ve görüntüsünü referans göstereceği anı takip edecektir.

EK 05-Şubat-2017:.

2017/02/05: Ben kullanmanın çözüm \ \ CDROMX aksi takdirde aşağıdaki iletiyle başarısız olabilir biri eklediğinde/256 sadece iş gibi görünüyor öğrendim 01:11:15 HATA 53 (0x00000035) Kaynak Dizine Erişim \. \ CDROM0 \ Ağ yolu bulunamadı.

Umarım bu, insanlara yardımcı olur, bu zaten bana yardımcı oldu, notepad uzun satır ayarının ardından: 72, stackoverflow üzerinde çirkin bir düzen oluşturur.

0

Bu benim için çalıştı:

$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 ''), '')):\"