PDA

Показать полную графическую версию : Windows Scripting Host trouble...


Страниц : [1] 2

Mr Dan
05-11-2003, 09:35
Привет всем!!!

Народ, кто сталкивался с WSH - помогите.....

Пытаюсь подключить сетевой диск, предварительно удалив старый, делаю:

JScript:
var Network = WScript.CreateObject("WScript.Network");
Network.RemoveNetworkDrive ("O:");
Network.MapNetworkDrive ("O:", "\\\\krrunion\\user");

При запуске выдает ошибку:
"Локальное имя устройства уже используется для подключения к другому сетевому ресурсу"

Получается, что Network.RemoveNetworkDrive ("O:") отрабатывает, а Network.MapNetworkDrive ("O:", "\\\\krrunion\\user") - нехочет, ругается.........

В чем проблема, не пойму?! Помогите.....

З.Ы. Да, кстати паузу между этими коммандами я пробовал ставить - тоже не помогает

DAnG
05-11-2003, 13:48
команды
net use o: /del
net use o: \\krrunion\user
выполняются успешно?

Хорошо бы перехватывать ошибку в строке Network.RemoveNetworkDrive ("O:"); если О: не подключен.

У меня этот скрипт выполняется без проблем.

Mr Dan
05-11-2003, 14:35
2DAnG

Да в том то и дело, что net use выполняется успешно, а вот Network.MapNetworkDrive ("O:", "\\\\krrunion\\user"); - нет. ?!

До использования  Network.RemoveNetworkDrive ("O:"); выполняется проверка подключен ли сетевой диск, аль нет, так что тут проблем никаких.....

Такое ощущение что WSH просто не могёт подряд выполнять команды RemoveNetworkDrive и MapNetworkDrive

???

DAnG
05-11-2003, 21:22
Сорри, поторопился с ответом.

Расследование показало, что нужно использовать
Network.RemoveNetworkDrive ("O:",1,1);

object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])

Mr Dan
06-11-2003, 10:03
2DAnG

Во спасибо, выручил.......последние два параметра оказались как нельзя кстати :)

Да, кстати, а ты пробовал подключать сетевые принтеры через метод AddWindowsPrinterConnection?
Насколько я понял можно подключать только те принтеры, которые непосредственно подключены к машине на базе NT.
А у меня в сети подавляющее большинство машин с 98-й виндой и этот метод не отрабатывает......при попытке подключения AddWindowsPrinterConnection("\\\\CompName\\EPSON") пишет:
"The remote server machine does not exist or is unavailable", хотя эта машина есть и доступ к ней тоже есть и принтер расшаренный и все такое.........

Может сталкивался?!

SergOst
06-11-2003, 13:56
To Mr Dan:

Объяните чайнику: Прочитал ваши письма, вдохновился,
скопировал следующие строки в файл FFF.js

var Network = WScript.CreateObject("WScript.Network");
Network.RemoveNetworkDrive ("n:",1,1);
Network.MapNetworkDrive ("n:", "\\\\comp1\\c$");

щелкнул дважды по этому файлу и получил ошибку во второй строке (символ 1), недоступный сетевой диск

Что я сделал не так? Команда net use n: \\comp1\c$ исправно срабатывает и подключает сетевой диск N.
Естественно, когда запускаю *.js n-диска нет.
Вообще зачем вторая строка? Пробовал ее переставить третьей - не помогло.
Функцию Block Scripting в Norton АV отключил, может ее надо отключать и на компе, куда подключаешься?


Исправлено: SergOst, 14:58 6-11-2003

Mr Dan
06-11-2003, 14:40
2SergOst


Если тебе просто нужно подключить диск, делаешь Network.MapNetworkDrive ("n:", "\\\\comp1\\c$"), без Network.RemoveNetworkDrive ("n:",1,1).
В твоём же случае получается, что сначала выполняется команда *Network.RemoveNetworkDrive ("n:",1,1), которая пытается отключить диск n: , но поскольку диска n: у тебя нету, она тебе и ругается, грит мол недоступный сетевой диск.

Делай так:

var Network = WScript.CreateObject("WScript.Network");
Network.MapNetworkDrive ("n:", "\\\\comp1\\c$");

и все должно быть ОК.

З.Ы. А вобще при желании можешь написать ф-ю которая бы сначала проверяла подключен ли уже сетевой диск или нет, а потом в зависимости от результата действуешь....:)

Например моя ф-я выглядит  так:

function CheckNetworkMapping(DriveLetter,Path)
*// Возвращаемые значения:
* * // 0 - диск не найден
* * // 1 - диск найден, но несоответствует Path
* * // 2 - диск найден и соответствует Path
* *var Bool;
* *var Result;
* * Bool = false;
* *var Drives = Network.EnumNetworkDrives();
* *for(var i = 0; i < Drives.length; i += 2)
* *{
* * *if(Drives.Item(i).toLowerCase() == DriveLetter.toLowerCase())
* * * { Bool = true; if(Drives.Item(i+1).toLowerCase()==Path.toLowerCase()) Result = 2; else Result = 1;
* * * * break;
* * * }
* *}
* *if(Bool)
* * return Result
* *else
* * return Result = 0; *
}

SergOst
06-11-2003, 18:09
To Mr Dan

Спасибо, все получилось с подключением-отключением.

А эту функцию тоже можно в *.js файл запихать и в нем вызывать?

функция не совсем понятна: что имеется в виду под Path, когда диск подключен? UNC имя что-ли? (в моем случае \\comp1\c$ ?)

Если да, то оно прямо так в кавычках строкой и подставляется в вызов функции, как и "n:"?

Mr Dan
06-11-2003, 18:49
2SergOst

>> А эту функцию тоже можно в *.js файл запихать и в нем вызывать?

Using Windows Script Files (.wsf)
A Windows script (*.wsf) file is a text document containing Extensible Markup Language (XML) code. It incorporates several features that offer you increased scripting flexibility. Because Windows script files are not engine-specific, they can contain script from any Windows Script compatible scripting engine. They act as a container.

With .wsf files, you can take advantage of the following features as you create your scripts:

.wsf files support
Include statements, Multiple engines,Type libraries, Tools,Multiple jobs in one file.

Include Statements
If you have .js and .vbs files from previous Windows Script Host projects, a .wsf file enables you to use them with Windows Script Host. A .wsf file encapsulates a library of functions that can in turn be used by multiple .wsf files.

The following example shows a .wsf file that includes a JScript file (fso.js), plus a VBScript function that calls a function (GetFreeSpace) in the included file. The contents of fso.js are also shown.

<job id="IncludeExample">
  <script language="JScript" src="FSO.JS"/>
  <script language="VBScript">
     ' Get the free space for drive C.
     s = GetFreeSpace("c:")
     WScript.Echo s
  <sScript>
</job>
The fso.js file contains the following:

function GetFreeSpace(drvPath) {
  var fs, d, s;
  fs = new ActiveXObject("Scripting.FileSystemObject");
  d = fs.GetDrive(fs.GetDriveName(drvPath));
  s = "Drive " + drvPath + " - " ;
  s += d.VolumeName;
  s += " Free Space: " + d.FreeSpace/1024 + " Kbytes";
  return s;
}


>>функция не совсем понятна: что имеется в виду под Path, когда диск подключен? UNC имя что-ли? (в моем случае \\comp1\c$ ?)

>>Если да, то оно прямо так в кавычках строкой и подставляется в вызов функции, как и "n:"?

Под Path имеется в виду UNC имя, записывается в кавычках, например  CheckNetworkMapping("n:","\\\\disk\\dir")

DAnG
06-11-2003, 19:01
Mr Dan
ты пробовал подключать сетевые принтеры через метод AddWindowsPrinterConnection?
нет. Но судя по "ручному подключению", для подключения принтера win9x нужно указывать его драйвер. Возможно. проблема в этом.

P.S. я не спец по WSH, и не очень его люблю за громоздкость. perl, имхо,  гораздо симпатичнее :)

Mr Dan
07-11-2003, 09:25
DAnG

Интересно, а в чем заключается громоздкость WSH ? Тем более ,он поддерживает Perl. Просто себе хост и все.....работает довольно быстро.

Guest
19-11-2003, 12:41
Option Explicit
Dim Network
Const PrinterShare = "\\server\printer"

Set Network = CreateObject("Wscript.Network")
'Network.AddWindowsPrinterConnection PrinterShare
Network.SetDefaultPrinter PrinterShare
строчка типа

Network.AddWindowsPrinterConnection PrinterShare
отрабатывается только на принтерах при сервере 2000
а если 98 или jet стоит то не будет работать

а для мапирования дисков мне и полегче хватает
sub groupsmap(objDiskName,objDiskMap)
   On Error Resume Next  
Add2Log Now & ":Подключение диска -" & objDiskName  & " от - " & objDiskMap
       objNetwork.RemoveNetworkDrive objDiskName, True, True
       objNetwork.MapNetworkDrive objDiskName, objDiskMap
   Err.clear
end sub

Sub Add2Log (txt)
    Const Myfile = "C:\MyLog.txt"
    Const ForAppending = 8
Dim fso, file
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.OpenTextFile(MyFile, ForAppending, TRUE)
    file.WriteLine (txt)
    Set file = Nothing
End Sub

kovdaev
21-12-2005, 20:13
Помогите написать скрипт для создания ярлыков в папке
%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
Заранее спасибо

jurapolet
20-03-2009, 10:24
А где найти этот Windows Script Host, поиск ничо не нашёл...

2poisonS
20-03-2009, 11:49
jurapolet, Google (http://www.google.com.tj/search?q=Windows+Script+Host&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a) в помощь...

jurapolet
20-03-2009, 12:36
jurapolet, Google в помощь... »

Это я уже находил, везде книги и описание, реально из файлов нашёл только
Windows Script 5.6 for Windows XP and Windows 2000, куда это ставить, в систему или дистрибутив? В систему установил - тоже самое, ничё не изменилось. Специалисты!!! Покажите пальцем чо откуда взять и куда положить, тем более раз эта проблема не единичная.

Enforcer2K
20-03-2009, 13:25
А где найти этот Windows Script Host »
В системе он уже есть. Создайте текстовой файл:
msgbox("AAA")
измените расширение на .vbs, а потом выполните. Работает?
А можно ли сделать что-то на подобие этого »
Конечно! Сделать можно все.

jurapolet
20-03-2009, 14:05
В системе он уже есть. Создайте текстовой файл: »

Создал текстовый файл msgbox, сохранил как msgbox.vbs, запускаю двойным кликом открывается как пустой текстовый файл
Запускаю меню Выполнить, ввожу msgbox.vbs, появляется это:
http://pic.ipicture.ru/uploads/090320/40868/7UUBv7165Q.jpg

Извиняюсь, неправильно сделал.
Щас просто изменил расширение, запускаю двойным кликом появляется окно выбора программы для открытия, выбираю Microsoft (R) Windows Based Script Host, появляется такое окно:

http://pic.ipicture.ru/uploads/090320/40868/jxMFRJjP4p.jpg

Habetdin
20-03-2009, 14:10
Создал текстовый файл msgbox, сохранил как msgbox.vbs »
а внутри написали что-нибудь?
Запускаю меню Выполнить, ввожу msgbox.vbs »
вводите полный путь, например "C:\Test\Script.vbs"

jurapolet
20-03-2009, 14:15
Внутри ни чо не писал, чистый файл, сообщает не обнаружено ядро, хотя программа в окне выбора есть Microsoft (R) Windows Based Script Host. Ошибку в предыдущем посте отредактировал




© OSzone.net 2001-2012