Как запустить 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
Заранее спасибо за любую помощь!