Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Нужен VBS скрипт для GPO (мапинг сетевого диска, запуск файла, отключение диска)

Ответить
Настройки темы
VBS/WSH/JS - [решено] Нужен VBS скрипт для GPO (мапинг сетевого диска, запуск файла, отключение диска)

Аватара для Anton04

Ветеран


Сообщения: 2068
Благодарности: 389


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Anton04
Дата: 05-05-2010
Помогите написать скрипт:

необходимо в при запуске ПК (до логина пользователя, т.е. когда обрабатывается GPO ПК) выполнение несложного vbs скрипта который делает следующее:

1. мапит диск \\server\script
2. выполняет определённую команду или запускает файл (exe)
3. отключает диск
единственное что ещё хотелось бы предусмотреть это возможность недоступности сервера по пути и в этом случае просто завершения работы скрипта без создания лог файла с ошибкой.

Я даже более чем уверен что что-то подобное уже реализовывалось, поделитесь кодом.

P.S. Само собой что данный скрипт выполняется в сети домена.
P.P.S. Скрипт должен быть совместим, т.е. выполняться на Windows XP/Vista/7/2008/2008R2.
P.P.P.S. Поиск в Интернете и на форуме дал только код для решения отдельных элементов задачи, а решение задачи в целом не нашёл.

Вот примеры, того чего нашёл:

Подключить сетевой диск из VBScript
читать дальше »

[VBS]
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "X:", "\\server\script"
[/VBS]


Отключить сетевой диск из VBScript
читать дальше »

[VBS]
Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemoveNetworkDrive "X:"
[/VBS]


Или вот ещё:

Данный скрипт подключает расшареную папку (\\server\shared) на диск X:

читать дальше »
On Error Resume Next

Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName

strDriveLetter = "X:"
strRemotePath = "\\server\shared"
strNewName = "003 otdel"
mapped = false

Set objNetwork = CreateObject("WScript.Network")
Set oDrives=objNetwork.EnumNetworkDrives

For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item(i)=strDriveLetter Then mapped = true

Next
'WScript.echo "mapped = " & mapped
If mapped Then objNetwork.RemoveNetworkDrive strDriveLetter
If mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
If Not mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath

Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName

WScript.Quit


Запуск файла
читать дальше »

set WshShell = WScript.CreateObject("WScript.Shell") 'Наделяем переменную WshShell силой.
WshShell.Run ":X\run.exe" 'Запускаем файл

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 10:40, 04-05-2010

 

Ветеран


Contributor


Сообщения: 2709
Благодарности: 1685

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt Подкл_диск_Выполнить_откл_диск.vbs.txt
(1.5 Kb, 66 просмотров)

Цитата Anton04:
1. мапит диск \\server\script
2. выполняет определённую команду или запускает файл (exe)
3. отключает диск »
Код: Выделить весь код
Set WShell = CreateObject("Wscript.Shell")
Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork

Mess_Off = NetDiskUnMap("S:")
Mess_On = NetDiskMap("S:", "\\Server\Resurs")
If Mess_On = "yes" Then
    Sending = WShell.Run("C:\\WINDOWS\\system32\\notepad.exe", 1, True)
    Mess_Off = NetDiskUnMap("S:")
End If

' Подключение сетевого диска
Function NetDiskMap(Drive, NetPath)
'    Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork
    On Error Resume Next
    WshNetwork.MapNetworkDrive Drive, NetPath
    If Err.Number <> 0 Then
        Mess = "Ошибка при подключении диска " + Drive + vbCrLf + "Код ошибки: " + CStr(Err.Number) + vbCrLf + "Описание: " + Err.Description
        MsgBox Mess, 16, "Подключение сетевого диска"
   Else
        Mess = "yes"
    End If
    On Error GoTo 0
    NetDiskMap = Mess
'    MsgBox Mess, 16, "Подключение сетевого диска"

End Function


' Отключение сетевого диска
Function NetDiskUnMap(Drive)
'    Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork
    On Error Resume Next
    WshNetwork.RemoveNetworkDrive Drive
    If Err.Number <> 0 Then
        Mess = "Ошибка при отключении диска " + Drive + vbCrLf + "Код ошибки: " + CStr(Err.Number) + vbCrLf + "Описание: " + Err.Description
    Else
        Mess = "yes"
    End If
    On Error GoTo 0
    NetDiskUnMap = Mess
'    MsgBox Mess, 64, "Отключение сетевого диска"
End Function
Совместим с 98, Me, 2000, XP, 2003. На остальное не проверял. В GPO не встраивал.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:15, 04-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Anton04

Ветеран


Сообщения: 2068
Благодарности: 389

Профиль | Отправить PM | Цитировать


megaloman,

Спасибо, проверю отпишусь.

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 16:59, 05-05-2010 | #3


Ветеран


Contributor


Сообщения: 2709
Благодарности: 1685

Профиль | Отправить PM | Цитировать


Anton04, Уверен, скрипт работает, но более функционально его главную часть написать в виде (определил данные в заголовке, в принципе, лучше бы вообще их передавать в аргументах при вызове, но Вы просили проcто)
Код: Выделить весь код
DiskLetter = "S:"                               ' Буква сетевого диска
NetPath = "\\Server\Resurs"                     ' Путь к расшаренной папке
Program = "C:\WINDOWS\system32\notepad.exe"     ' Программа для запуска после подключения сетевого диска

Set WShell = CreateObject("Wscript.Shell")
Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork

Mess_Off = NetDiskUnMap(DiskLetter)
Mess_On = NetDiskMap(DiskLetter, NetPath)
If Mess_On = "yes" Then
    Sending = WShell.Run(Program, 1, True)
    Mess_Off = NetDiskUnMap(DiskLetter)
End If
А сообщение об ошибке лучше уточнить дополнительной информацией
Код: Выделить весь код
Mess = "Ошибка при подключении диска " + Drive + " к " + NetPath + vbCrLf + "Код ошибки: " + CStr(Err.Number) + vbCrLf + "Описание: " + Err.Description

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:14, 06-05-2010 | #4

AkP AkP вне форума

Пользователь


Сообщения: 92
Благодарности: 21

Профиль | Отправить PM | Цитировать


А зачем
Цитата Anton04:
1. мапит диск \\server\script
2. выполняет определённую команду или запускает файл (exe)
3. отключает диск »
А есть ли необходимость в пунктах 1 и 3 ??

ГП: Конфигурация компьютера\конфигурация Windows\Сценарии(запуск\завершение)\Автозагрузка

Размещенные здесь скрипты будут выполняться при запуске оси, еще до логина пользователей.
Реально они живут по такому пути: "\\zup.local\SysVol\zup.local\Policies\{379ADE4E-5F7C-40C4-BA6D-D2DBAE60CB07}\Machine\Scripts\Startup" и не доступны обычным пользователям.
Ну и предусматривать, как ты хотел, возможность недоступности сервера тут не надо..... ибо если недоступен сисвол, тебе ужо не до скриптов... ))))

Здесь можно воткнуть пункт 2 и не парится с подключением\отключением сетевого диска, а так же обработкой ошибок этих действий, то есть оставить только пункт несущий полезную нагрузку.

Отправлено: 02:50, 07-05-2010 | #5


Аватара для Anton04

Ветеран


Сообщения: 2068
Благодарности: 389

Профиль | Отправить PM | Цитировать


megaloman,

Элегантно и просто

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 12:14, 07-05-2010 | #6


Аватара для Anton04

Ветеран


Сообщения: 2068
Благодарности: 389

Профиль | Отправить PM | Цитировать


В общем самый последний вариант скрипта выглядит так (чтоб можно было ещё с аргументами запускать):

читать дальше »

Код: Выделить весь код
Option Explicit
DiskLetter = "X:"                               ' Буква сетевого диска
NetPath = "\\server\Script"                     ' Путь к расшаренной папке
Pr = " "
Kav = Chr(34)
Program =
Kav&"%SYSTEMROOT%\regedit.exe"&Kav&Pr&"/s"&Pr&Kav&"x:\my.reg"&Kav      ' Программа для запуска после подключения сетевого диска
 
Set WShell = CreateObject("Wscript.Shell")
Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork 
 
Mess_Off = NetDiskUnMap(DiskLetter) 
Mess_On = NetDiskMap(DiskLetter, NetPath) 
If Mess_On = "yes" Then 
    Sending = WShell.Run(Program, 1, True) 
    Mess_Off = NetDiskUnMap(DiskLetter) 
End If 
 
' Подключение сетевого диска 
Function NetDiskMap(Drive, NetPath) 
'    Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork 
    On Error Resume Next 
    WshNetwork.MapNetworkDrive Drive, NetPath 
    If Err.Number <> 0 Then 
        Mess = "Ошибка при подключении диска " + Drive + vbCrLf + "Код ошибки: " + CStr(Err.Number) + vbCrLf + "Описание: " + Err.Description 
        MsgBox Mess, 16, "Подключение сетевого диска" 
   Else 
        Mess = "yes" 
    End If 
    On Error GoTo 0 
    NetDiskMap = Mess 
'    MsgBox Mess, 16, "Подключение сетевого диска" 
 
End Function 
 
 
' Отключение сетевого диска 
Function NetDiskUnMap(Drive) 
'    Set WshNetwork = CreateObject("WScript.Network")        'Создаем объект WshNetwork 
    On Error Resume Next 
    WshNetwork.RemoveNetworkDrive Drive 
    If Err.Number <> 0 Then 
        Mess = "Ошибка при отключении диска " + Drive + vbCrLf + "Код ошибки: " + CStr(Err.Number) + vbCrLf + "Описание: " + Err.Description 
    Else 
        Mess = "yes" 
    End If 
    On Error GoTo 0 
    NetDiskUnMap = Mess 
'    MsgBox Mess, 64, "Отключение сетевого диска" 
End Function

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 15:30, 28-05-2010 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Нужен VBS скрипт для GPO (мапинг сетевого диска, запуск файла, отключение диска)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - VBS скрипт для автоматизации PreSP4 Keir Скриптовые языки администрирования Windows 1 14-04-2010 04:27
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
VBS/WSH/JS - правильный ли скрипт для GPO? Hooty Скриптовые языки администрирования Windows 1 18-05-2009 10:01
Помогите, нужен скрипт vbs или wsh Foxie Microsoft Windows NT/2000/2003 3 18-01-2006 13:45
VBS/WSH/JS - Хелп! Нужен скрипт на на WSH или VBS b0bi Программирование и базы данных 6 15-06-2004 15:17




 
Переход