5

起動可能な UFD から WinPE 2 を起動しています。WIM の場所を ImageX に伝えるために、ドライブ文字を検出する必要があります。ただし、イメージングしているマシンによっては、マウントされているドライブが異なります。

たとえば、P: などに一貫して UFD をマウントする方法が必要です。マシンが起動されたドライブの文字を検出する方法、または startnet.cmd からアクセス可能な変数に WIM ファイルの場所を渡す別の方法はありますか?

これは、TechNet で同じ問題を抱えている他の人です。

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

4

4 に答える 4

3

これは、ここで説明した他のソリューションよりも一般的なソリューションではありませんが、「RAMドライブで起動された」WindowsPEOSが起動された基盤となるボリュームを特定する特定の方法があるようです。Windows自動インストールキットのWindowsPEに関するドキュメントから:

Windows展開サービスを起動していない場合、Windows PEがどこから起動したかを判断する最良の方法は、最初にPEBootRamdiskSourceDriveレジストリキーを確認することです。存在しない場合は、正しいPEBootTypeのドライブをスキャンして、ブートドライブを識別する何らかのタグファイルを探します。

(問題のレジストリ値はHKLM \ SYSTEM \ CurrentControlSet \ Controlの下にあります。)

于 2009-04-17T08:30:20.797 に答える
3

この VBScript は、各リムーバブル ドライブ (文字:説明) のメッセージを表示し、特定のドライブを検索して文字を返すように簡単に変更できます。

 
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

それがまったく役立つかどうかはわかりません。

于 2009-04-06T20:28:53.310 に答える
0

これが最適ではない解決策です。この場合、UFD には特定の名前が必要です。この名前は、可能なすべてのドライブ文字を検索して一致するスクリプトに渡されます。すべてのフラッシュ ドライブが同じ名前であることに依存するのは、おそらく現実的ではありません。

誰かがより良い答えを出してくれることを願っています!

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
于 2009-04-06T18:16:34.737 に答える