2009-04-06 13 views
4

Ich WinPE 2 von einer bootfähigen UFD gestartet, und ich brauche den Laufwerksbuchstaben zu erkennen, um ImageX zu sagen, wo die WIM zu finden. Abhängig von der Maschine, die ich abbilde, gibt es verschiedene Laufwerke.Wie kann ich den Laufwerksbuchstaben eines gebooteten USB-Laufwerks vom Skript erkennen?

Ich muss einen Weg konsequent die UFD zu montieren, sagen wir, P: oder so etwas. Gibt es eine Möglichkeit, den Buchstaben des Laufwerks zu erkennen, von dem die Maschine gestartet wurde, oder eine andere Möglichkeit, den Speicherort meiner WIM-Datei an eine Variable zu übergeben, auf die von startnet.cmd zugegriffen werden kann?

Hier ist jemand anderes mit dem gleichen Problem gegenüber auf TechNet.

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

Antwort

3

Dieses VBScript wird eine Nachricht für jedes Wechsellaufwerk (Beschreibung Brief) zeigen.


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 

Weiß nicht, ob das überhaupt hilft.

+0

Diese Lösung scheint jetzt offensichtlich, dass Sie es präsentieren. Ich wette, das bedeutet, es ist die richtige Antwort. Ich muss bis zum Morgen warten, um das umzusetzen. Vielen Dank!! –

+0

Das funktioniert großartig! Danke noch einmal. –

+0

Die einfachsten Lösungen sind normalerweise die besten, froh, dass ich helfen konnte. – Tester101

0

Hier ist eine nicht-optimale Lösung. In diesem Fall muss das UFD einen bestimmten Namen haben, der an das Skript übergeben wird, das nach jedem möglichen Laufwerksbuchstaben für eine Übereinstimmung sucht. Es ist wahrscheinlich nicht praktisch, sich auf die Flash-Laufwerke mit dem gleichen Namen zu verlassen.

noch Hoffnung, jemand öffnet sich mit einer besseren Antwort durch! , Modifiziert für ein bestimmtes Laufwerk könnte leicht zu suchen und den Brief zurück:

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 
+0

Mit dieser Lösung ein weiteres Rätsel angehoben - das erste Mal in diesem Skript ausgeführt, es versehentlich das Startvolume (X ausgewählt :, die RAM-Disk) als Wechseldatenträger. Wenn ich das Skript erneut ausführen würde, würde es die richtige Festplatte auswählen. Nur eine Anmerkung für zukünftige Leser. –

2

Es ist eine weniger generische Lösung als die hier erwähnten andere, aber es scheint eine bestimmte Art und Weise zu sein, die darunter liegende Volumen ein „RAM-Laufwerk gebootet“ Windows PE OS aus gestartet wurden, um zu bestimmen. Aus der Dokumentation zu Windows PE in der Windows Advanced Installation Kit:

Wenn Sie Windows Deployment Services booten nicht, den besten Weg zu bestimmen, wo Windows PE gebootet von zum ersten Scheck für PEBootRamdiskSourceDrive Registrierungsschlüssel ist. Wenn es nicht vorhanden ist, scannen die Antriebe der richtigen PEBootType und suchen Sie nach eine Art Tag-Datei, die das Boot-Laufwerk identifiziert.

(Der Registrierungswert in Frage unter \ CurrentControlSet \ Control HKLM \ SYSTEM sitzt.)