Тема: JS:подключение сетевого диска
Задача такая: подключить определённый общий ресурс на сервере, как сетевой диск с определённой буквой на локальный комп., если такая буква в локальной системе уже используется, сообщить об ошибке, если с этой буквой подключён другой общий ресурс, отключить его и подключить требуемый. Написал как мне кажется коряво...
Может кто подскажет как покороче(поизящнее)...
var netObj = new ActiveXObject("WScript.Network");
var fsoObj = WScript.CreateObject("Scripting.FileSystemObject");
var netDsk = "\\\\192.168.7.22\\distrib", netDsk$ = "\\\\server2003\\distrib", netLetter = "x";
var netDrv = netObj.EnumNetworkDrives(), arr = [], cnt = 0;
var coll = new Enumerator(netDrv);
for(i = 0, coll.moveFirst(); !coll.atEnd(); coll.moveNext(), i++)
{ // запись в массив имён и ресурсов всех сетевых дисков
arr[i] = coll.item();
}
for(j = 0; j < netDrv.length; j++)
{
if( (arr[j].toLowerCase() == (netLetter.toLowerCase() + ":")) && ( (arr[j+1].toLowerCase() == netDsk.toLowerCase()) || (arr[j+1].toLowerCase() == netDsk$.toLowerCase()) ) )
{ // буква диска совпадает и ресурс совпадает
cnt++;
WScript.Quit(); // выходим, ничего не делая, всё и так хорошо
}
else
{
if(arr[j].toLowerCase() == netLetter.toLowerCase() + ":")
{ // совпадает буква диска, про ресурс ничего не известно, кроме того, что он, не тот, который нас интересует
cnt++;
try
{
netObj.RemoveNetworkDrive(arr[j], true, true);
WScript.Sleep(1000); // немного спим...
DrvConn(); // вызов функции
}
catch(err)
{
WScript.Echo("Ошибка отключения диска:\n " + err.message);
WScript.Qiut(); // завершение скрипта по ошибке
}
}
}
}
if(cnt == 0)
{DrvConn();} // вызов ф-ции, если интересующий ресурс не был найден и буква также "не встретилась", среди сетевых дисков.
function DrvConn()
{
var drvColl = fsoObj.Drives;
var en = new Enumerator(drvColl);
while(!en.atEnd())
{
if((en.item().DriveLetter.toLowerCase() == netLetter.toLowerCase()) && (en.item().DriveType != 3))
{
WScript.Echo("Подключение сетевого диска как \"" + netLetter.toUpperCase() + "\" невозможно\n" +
"так как такой диск уже присутствует в системе и это не сетевой диск");
WScript.Quit(); // завершение работы по ошибке
}
en.moveNext();
}
try
{
netObj.MapNetworkDrive(netLetter + ":", netDsk, true);
}
catch(err)
{
WScript.Echo("Ошибка подключения диска: " + err.message);
WScript.Quit(); // завершение работы по ошибке
}
}

