CertNerd Ответов: 1

Как запустить VBscript в WinPE


Всем Привет,

Для проекта, над которым я работаю, мне нужно получить VBScript, работающий на WinPE, который позволяет пользователю сопоставлять сетевой диск под своей учетной записью домена. Скрипт использует следующие классы объектов:

- объект WScript.сеть
- ScriptPW.Пароль
- Описание.Filesystemobject, с

Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку PE разделен, я не могу определить все зависимости, которые мне нужно включить в мой WIM. В этот момент я могу запустить vbscript (я должен использовать синтаксис "cscript.exe / / E:Vbscript mapNetworkDrive. vbs"), но когда он добирается до кода, где я заставляю пользователя вводить свой пароль без отображения нажатий клавиш на экране, он действительно отображает символы. После того, как я нажал enter, скрипт, похоже, заморозил окно консоли. Нажатие Control+C не прекращает его.

Прежде чем вы спросите; сценарий действительно отлично работает в любой полной версии x86 Windows.

У меня есть следующие библиотеки DLL, включенные в мой WIM, и они регистрируются при запуске:
- scriptpw.dll
- vbscript.dll
- wshom.ОСХ
- scrrun.dll

Есть ли у кого-нибудь идеи, каких еще зависимостей мне может не хватать?

Пожалуйста, смотрите мой код ниже:

Dim objNetwork, objPassword, strVolumeLabel, strRemoteShare, StdIn, StdOut, ISID, Password, fso, vlOK, path

set objNetwork = wscript.createobject("Wscript.Network")
Set objPassword = CreateObject( "ScriptPW.Password" )
Set StdIn = Wscript.StdIn
Set stdOut = WScript.StdOut
set fso = CreateObject("Scripting.FileSystemObject")

StdOut.Write "Please enter your ISID: "
ISID = StdIn.ReadLine
StdOut.Write "Please enter your Password: "
Password = objPassword.GetPassword()
stdOut.WriteLine ""
StdOut.Write "Please enter the network path you want to map: "
path = StdIn.ReadLine

vlOK = 1
do while vlOK = 1	
	StdOut.Write "Please enter the drive letter you want to use: "
	strVolumeLabel = StdIn.ReadLine

	if len(strVolumeLabel) <> 1 then
		stdout.writeline "Please enter only one letter."
		stdout.write "Please enter the drive letter you want to use: "
		strVolumeLabel = StdIn.ReadLine
	else
		if fso.DriveExists(strVolumeLabel & ":") then
			stdout.writeline "That Drive Letter is already in use."
		else
			vlOK = 0
		end if
	end if
	
loop

strvolumelabel = strvolumelabel & ":"
stdout.writeline ""
objNetwork.MapNetworkDrive strVolumeLabel, path, "False", ISID, Password

if fso.DriveExists(strVolumeLabel) then
	stdout.WriteLine "The network drive was mapped successfully."
else
	stdout.WriteLine "An error occurred when attempting to map the network drive."
end if

stdout.writeline "Press ENTER key to exit"
Do While Not WScript.StdIn.AtEndOfLine
   Input = WScript.StdIn.Read(1)
Loop


Заранее спасибо за любую помощь!

1 Ответов

Рейтинг:
0

A1 mamun

у вас есть добавить 3 пакета
1. WinPE-HTA. cab
2.Среда Предустановки Windows-Сценариев.такси
3. WinPE-Wmi. cab


Чтобы добавить Hta pakege перейдите по ссылке MSDN
WinPE: добавление пакетов (ссылка на дополнительные компоненты)[^]

другие два, как и MSDN ссылка, но изменить имя пакета

спасибо.....

Примечание: пакет имеет две версии 64 и 32 бит в соответствии с вашим требованием добавить вам пакеты