Самый простой способ это выполнение сценария на машине.
Вот несколько примеров:
Для работы с какими-то объектами сети и сетевого окружения в WSH есть объект WshNetwork, позволяющий получать информацию об имени пользователя, компьютера, подключать и отключать сетевые диски и принтеры.
Рассмотрим небольшой пример, в котором выведем в информационное окно сведения об имени пользователя, имени компьютера и домене:
//Пример работы с WshNetwork в JScript
//Создаем объект WshNetwork
var WshNetwork = new ActiveXObject("WScript.Network");
//Создаем переменную info и заносим туда имя пользователя
info = "Имя пользователя: " + WshNetwork.UserName;
//Добавляем переход на следующую строку
info = info + "\n";
//Добавляем имя компьютера
info = info + "Имя компьютера: " + WshNetwork.ComputerName;
info = info + "\n";
//Добавляем домен, к которому подключился пользователь
info = info + "Домен: " + WshNetwork.UserDomain;
//Выводим на экран полученную информацию
WScript.Echo (info);
'Тот же пример на VBScript
Set WshNetwork = CreateObject("WScript.Network")
info = "Имя пользователя: " & WshNetwork.UserName
'Обратите внимание, как осуществляется переход на новую строку
info = info & Chr(10)
info = info & "Имя компьютера: " & WshNetwork.ComputerName
info = info & Chr(10)
info = info & "Домен: " & WshNetwork.UserDomain
WScript.Echo info
В этих примерах мы использовали свойства объекта WshNetwork: UserName, ComputerName и UserDomain для получения информации о залогинившемся пользователе. Зачем это может понадобиться? Например, если на компьютере работает несколько пользователей и им нужен доступ к разным сетевым дискам, можно обеспечить автоматическое мапирование этих дисков в зависимости от того, какой пользователь сейчас работает.
Таким образом мы незаметно подошли к вопросу работы с сетевыми дисками. Для начала, неплохо бы выяснить, какие сетевые диски подключены в данный момент:
//JScript
var vbOKOnly = 0;
var vbInformation = 64;
var WSHShell = WScript.CreateObject("WScript.Shell");
var WSHNetwork = WScript.CreateObject("WScript.Network")
var colDrives = WSHNetwork.EnumNetworkDrives();
if (colDrives.length == 0) {
WSHShell.Popup("Подключенных сетевых дисков нет",
0,
"Работа с WSHNetwork",
vbInformation + vbOKOnly );
} else {
strMsg = "Текущие сетевые подключения: \n";
for (i = 0; i < colDrives.length; i += 2) {
strMsg = strMsg + "\n" + colDrives(i) + "\t" + colDrives(i + 1);
}
WSHShell.Popup(strMsg,
0,
"Работа с WSHNetwork",
vbInformation + vbOKOnly );
}
'VBScript
Set WSHNetwork = WScript.CreateObject("WScript.Network")
Set colDrives = WSHNetwork.EnumNetworkDrives
If colDrives.Count = 0 Then
MsgBox "Подключенных сетевых дисков нет", _
vbInformation + vbOkOnly, _
"Работа с WSHNetwork"
Else
strMsg = "Текущие сетевые подключения: " & Chr(10)
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & Chr(10) & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
MsgBox strMsg, _
vbInformation + vbOkOnly, _
"Работа с WSHNetwork"
End If
Думаю, подробно код объяснять не стоит, все довольно прозрачно: создаем нужные переменные, проверяем есть ли вообще подключенные диски, если нет - выводим соответствующее сообщение, если есть - выводим их список.
Для подключения и отключения сетевых дисков существуют методы MapNetworkDrive и RemoveNetworkDrive соответственно. Пример работы с ними (на JScript):
WshNetwork.MapNetworkDrive("X:", "\\\\S2\\Vol1", "true", "User1", "123");
Здесь обязательными являются только первые два параметра: буква, на которую будет подключаться диск и, собственно, путь к сетевому диску. Третий (true или false) параметр указывает, осуществлять или нет подключение этого диска при следующем логоне. Четвертый и пятый параметры - это имя пользователя и пароль, с которыми может подключаться этот диск. Конечно, хранить пароль на подключение диска в открытом виде в скрипте не очень мудро. Лучше организовать доступ к диску нужным пользователям на сервере, средствами самой ОС. Тогда посторонние люди не смогут узнать пароль для работы с этим ресурсом.
WshNetwork.RemoveNetworkDrive("X:", "true", "true");
Здесь обязателен только первый параметр - буква отключаемого диска. Второй параметр - если true, отключает диск даже если он в этот момент используется. Третий параметр сохраняет настройки для следующих логонов.
С дисками разобрались, перейдем к сетевым принтерам. Работа с ними мало отличается от работы с дисками, поэтому похожие моменты опишу коротко, а остановлюсь подробнее именно на отличиях.
EnumPrinterCollections - возвращает список подключенных принтеров (аналогично дискам).
AddPrinterConnection - подключает локальный порт компьютера к сетевому принтеру. Параметры у этого метода аналогичны методу MapNetworkDrive, только первым параметром идет не буква диска, а порт принтера (LPT1, например).
RemovePrinterConnection - отключает сетевой принтер (вместо буквы диска - порт принтера).
SetDefaultPrinter - устанавливает заданный сетевой принтер принтером по умолчанию. В качестве параметра методу передается сетевое имя принтера, который будет использован по умолчанию (SetDefaultPrinter("\\\\Comp1\\HP1100")
.
AddWindowsPrinterConnections - регистрирует принтер в Windows и подключает его к сетевому ресурсу. Этот метод позволяет создать связь с сетевым принтером без явного перенаправления вывода в локальный порт. Набор параметров этого метода для Windows 9x и Windows NT/2000/XP отличается.
Для Windows 9x:
AddWindowsPrinterConnections(strPrnPath, strDriverName [,strPort]);
strPrnPath - путь к сетевому принтеру;
strDriverName - имя драйвера, необходимого для подключения принтера;
strPort - порт, куда будет перенаправлен вывод.
Для Windows NT/2000/XP последние два параметра игнорируются.