Запустить VBScript из HTA и передать переменные

77
7

Я новичок в javascript и HTAs, но вот то, что у меня есть до сих пор:

  <HTML> 
<HEAD>
<title>Create Drive</title>
<HTA:APPLICATION
APPLICATIONNAME="CreateDrive"
VERSION="1.0"
SINGLEINSTANCE="yes"/>
<SCRIPT language="JavaScript">
window.resizeTo(400,300)
function WriteFile() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fh = fso.CreateTextFile("output.txt", true);
fh.WriteLine(userinfo.UN.value + ' ' + userinfo.FN.value + ' ' + userinfo.LN.value);
fh.Close();
}
</SCRIPT>
</HEAD>
<BODY>
<FORM name="userinfo">
<P>User Name: <INPUT name="UN" type="text"></P>
<P>First Name: <INPUT name="FN" type="text"></P>
<P>Last Name: <INPUT name="LN" type="text"></P>
<P><INPUT type="button" value="Create Drive" onclick="WriteFile();"></P>
</FORM>
</BODY>
</HTML>

Моя цель - использовать этот HTA для создания сетевых дисков для новых учетных записей пользователей. Раньше для этого использовался байт, который ссылался на VBScript, и пользователь ввел три значения (имя пользователя, имя и фамилия), которые были переданы вместе с.vbs и создали диск:

cscript /nologo newdrive.vbs q:\users\%1 /DFS:yes /server:server1 /server2:server2 /userfirstname:%2 /userlastname:%3 /quiet:no

Я хотел бы получить доступ к этому VBScript непосредственно из моего HTA и передать значения UN, FN и LN. В настоящее время я сохраняю значения, введенные в текстовый файл, но я ценю любую информацию об этом лучше.

Спасибо за вашу помощь.

спросил(а) 2021-01-19T15:39:59+03:00 5 месяцев назад
1
Решение
63

Я использую VBScript для этого примера. Вы могли бы так же легко сделать это в JavaScript.

Sub WriteFile()

' Retrieve the form values to be passed as args...
a1 = userinfo.UN.value
a2 = userinfo.FN.value
a3 = userinfo.LN.value

With CreateObject("WScript.Shell")

' Run the script, passing along the form values...
.Run "wscript.exe newdrive.vbs " & a1 & " " & a2 & " " & a3

End With

End Sub

В вашем сценарии newdrive.vbs вы получите эти значения, используя коллекцию WScript.Arguments:

strUser  = WScript.Arguments(0)
strFirst = WScript.Arguments(1)
strLast = WScript.Arguments(2)

ответил(а) 2021-01-19T15:39:59+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема