Domanda

Sto lanciando WinPE 2 da un flash USB di avvio, e ho bisogno di rilevare la lettera di unità per raccontare ImageX dove trovare il WIM. Tuttavia, a seconda della macchina sono di imaging, ci sono diverse unità montate.

Ho bisogno di un modo per montare in modo coerente l'unità flash USB a, diciamo, P: o qualcosa del genere. C'è un modo per rilevare la lettera dell'unità da cui è stato avviato la macchina, o in un altro modo per passare il percorso del mio file WIM per un accesso variabile da startnet.cmd?

Ecco qualcun altro con lo stesso problema sopra a TechNet.

http://social.technet.microsoft.com/Forums/en-US/itprovistadeployment/thread/3e8bb8db-a1c6-40be-b4b0-58093f4833be?prof=required#

È stato utile?

Soluzione

Questa VBScript mostrerà un messaggio per ogni unità rimovibile (lettera: descrizione)., Potrebbe essere facilmente modificato per la ricerca di una particolare unità e restituire la lettera

 
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType = 11")

For Each objDisk in colDisks
    Wscript.Echo objDisk.DeviceID & objDisk.Description
Next

Non so se questo aiuta a tutti.

Altri suggerimenti

E 'una soluzione meno generico rispetto agli altri menzionati qui, ma sembra che vi sia un modo specifico per determinare quale volume di fondo un "RAM-drive-boot" PE OS Windows è stato avviato da. Dalla documentazione su Windows PE nella Kit di Windows Installazione avanzata :

  

Se non si esegue l'avvio di Windows   Deployment Services, il modo migliore per   determinare dove Windows PE avviato dal   è di primo controllo per   chiave di registro di sistema PEBootRamdiskSourceDrive.   Se non è presente, la scansione delle unità   della voce PEBootType appropriata e cercare   una sorta di file di tag che identifica   l'unità di avvio.

(Il valore di registro in questione si trova in HKLM \ SYSTEM \ CurrentControlSet \ Control.)

Ecco una soluzione non ottimale. In questo caso, l'unità flash USB deve avere un nome specifico, che viene passato allo script che cerca ogni lettera di unità possibile per una partita. Probabilmente non è pratico di fare affidamento sulle unità flash aventi tutti lo stesso nome.

Ancora sperando che qualcuno si apre con con una risposta migliore!

setlocal

:: Initial variables
set TMPFILE=%~dp0getdrive.tmp
set driveletters=abcdefghijklmnopqrstuvwxyz
set MatchLabel_res=

for /L %%g in (2,1,25) do call :MatchLabel %%g %*

if not "%MatchLabel_res%"=="" echo %MatchLabel_res%

goto :END

:: Function to match a label with a drive letter. 
::
:: The first parameter is an integer from 1..26 that needs to be 
:: converted in a letter. It is easier looping on a number
:: than looping on letters.
::
:: The second parameter is the volume name passed-on to the script
:MatchLabel

:: result already found, just do nothing 
:: (necessary because there is no break for for loops)
if not "%MatchLabel_res%"=="" goto :eof

:: get the proper drive letter
call set dl=%%driveletters:~%1,1%%

:: strip-off the " in the volume name to be able to add them again further
set volname=%2
set volname=%volname:"=%

:: get the volume information on that disk
vol %dl%: > "%TMPFILE%" 2>&1

:: Drive/Volume does not exist, just quit
if not "%ERRORLEVEL%"=="0" goto :eof

set found=0
for /F "usebackq tokens=3 delims=:" %%g in (`find /C /I "%volname%" "%TMPFILE%"`) do set found=%%g

:: trick to stip any whitespaces
set /A found=%found% + 0


if not "%found%"=="0" set MatchLabel_res=%dl%:
goto :eof

:END

if exist "%TMPFILE%" del "%TMPFILE%"
endlocal
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top