|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - конструкция. Которая мапит диски у пользователей |
|
VBS/WSH/JS - конструкция. Которая мапит диски у пользователей
|
Новый участник Сообщения: 19 |
Профиль | Отправить PM | Цитировать
Здравствуйте коллеги. Мне очень нужна помощь сведущего человека. Я познакомился с языком vbs совсем недавно, и потому мой вопрос может показаться глупым, но все же. У меня есть вот такая конструкция. Которая мапит диски у пользователей, пути к диска и буква диска, прописаны в поле группы безопасности notes(Заметки)
Код находится п приложенном файле. Мне нужно прикрутить к нему регистрацию ошибок. Задача выглядит так : При ошибке, он должен регистрировать ее код в eventLog. На сайте Микрософт, нашел такую конструкцию: Set WshShell = WScript.CreateObject("WScript.Shell") rc = runLoginScript() 'Returns true if logon succeeds. if rc then WshShell.LogEvent 0, "Logon Script Completed Successfully" else WshShell.LogEvent 1, "Logon Script failed" end if Я так понял она просто пишет, была ошибка, или не было. Как мне переработать это, для регистрации кодов ошибок в лог? Заранее благодарю за помощь.. |
|
Отправлено: 10:36, 28-09-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Matr_os_kin, что есть «runLoginScript()»?
|
Отправлено: 18:10, 28-09-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Сам не понял. =( Вообще такая кострукция описана в MSDN.
Я ее представляю скорее так Set objShell = CreateObject("WScript.Shell") if Err.Number <> 0 Then objShell.LogEvent 1, Err.number & vbTab & Err.Description end if Вот только не знаю. Правильно я мыслю или нет? |
Отправлено: 18:14, 28-09-2011 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:41, 28-09-2011 | #4 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Ну как понятно из скрипта, он читает поле Заметки, группы безопасности в домене. Там будут записаны такие строчки
R:,\\Server1\shara1\ S:,\\server2\shara2\ Скрипт сплитует строку по "," и получается буква диска, и путь к нему. Потом он на машине удаляет диски, если они примаплены и подключает заново. Ошибка может быть 3-х видов. 1) Диска у пользователя нет, удалить скрипт не может. 2) в поле заметки написано вот так 7,\\server1\shara1. Скрипт не примапит диск, потому как некорректная буква диска. Ну или путь. Если будет наоборот. Вот я и хотел бы собирать ошибки в лог. Что бы можно было быстро посмотреть и понять, почему скрипт отработал некорректно. Не подключаясь к машине пользователя. Ссылка на MSDN http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx |
|
Отправлено: 08:49, 29-09-2011 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Matr_os_kin:
В Вашем случае: Цитата Matr_os_kin:
Цитата Matr_os_kin:
Option Explicit Const EventTypeSuccess = 0 Const EventTypeError = 1 Dim objWshShell Dim objWshNetwork Dim collWshCollection Dim i Dim elem Dim strDrive Dim strNetworkPath Dim strObjGroup_Info ' Пусть strObjGroup_Info — уже извлечённое описание из поля Заметки группы пользователя, например: strObjGroup_Info = _ "R:,\\Server1\shara1" & vbCrLf & _ "S:,\\server2\shara2" & vbCrLf & _ "E:,\\Server3\shara1" & vbCrLf & _ "7,\\server1\shara1" & vbCrLf & _ "\\Server3\shara3,Q:" Set objWshShell = WScript.CreateObject("WScript.Shell") Set objWshNetwork = WScript.CreateObject("WScript.Network") Set collWshCollection = objWshNetwork.EnumNetworkDrives() ' Перебираем все пары элементов, извлечённые из описания For Each elem In Split(strObjGroup_Info, vbCrLf) ' Разбиваем пару «Имя локального устройства/Имя сетевого устройства» на составляющие strDrive = Split(elem, ",")(0) strNetworkPath = Split(elem, ",")(1) ' Перебираем коллекцию существующих сетевых подключений к общим сетевым ресурсам For i = 1 To collWshCollection.Count Step 2 ' Если находим существующее сетевое подключение к планируемому сетевому ресурсу… If collWshCollection.Item(i) = strNetworkPath Then ' … отключаем его objWshNetwork.RemoveNetworkDrive collWshCollection.Item(i - 1) End If Next ' Включаем собственную обработку ошибок On Error Resume Next ' Пытаемся создать новое не постоянное (!) сетевое подключение к общему сетевому ресурсу objWshNetwork.MapNetworkDrive strDrive, strNetworkPath, False ' При какой-либо ошибке… If Err.Number <> 0 Then ' … пишем соответствующее сообщение: 'WScript.Echo "Logon script [" & WScript.ScriptFullName & "] event " & _ ' "for [" & objWshNetwork.UserDomain & "\" & objWshNetwork.UserName & "]" & _ ' " on [" & objWshNetwork.ComputerName & "]" & vbCrLf & _ ' vbTab & "Error Source: " & vbTab & vbTab & Err.Source & vbCrLf & _ ' vbTab & "Error Number: " & vbTab & vbTab & "0x" & Hex(Err.Number) & vbCrLf & _ ' vbTab & "Error Description: " & vbTab & Err.Description & vbCrLf & _ ' "Additional information" & vbCrLf & _ ' vbTab & "Local drive name: " & vbTab & strDrive & vbCrLf & _ ' vbTab & "Remote UNC path: " & vbTab & strNetworkPath objWshShell.LogEvent EventTypeError, "Logon script [" & WScript.ScriptFullName & "] event " & _ "for [" & objWshNetwork.UserDomain & "\" & objWshNetwork.UserName & "]" & _ " on [" & objWshNetwork.ComputerName & "]" & vbCrLf & _ vbTab & "Error Source: " & vbTab & Err.Source & vbCrLf & _ vbTab & "Error Number: " & vbTab & "0x" & Hex(Err.Number) & vbCrLf & _ vbTab & "Error Description: " & vbTab & Err.Description & vbCrLf & _ "Additional information" & vbCrLf & _ vbTab & "Local drive name: " & vbTab & strDrive & vbCrLf & _ vbTab & "Remote UNC path: " & vbTab & strNetworkPath End If ' Включаем системную обработку ошибок On Error Goto 0 Next Set collWshCollection = Nothing Set objWshNetwork = Nothing Set objWshShell = Nothing WScript.Quit 0 |
|||
Отправлено: 05:53, 30-09-2011 | #6 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Спасибо. Я сегодня попробую оба способа и свой и ваш. По возможности отпишусь.
|
Отправлено: 08:54, 30-09-2011 | #7 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Попробовал. Конструкция заработала. Еще раз спасибо. Буду дальше колдовать с детальным разбором ошибок.
|
Отправлено: 08:47, 03-10-2011 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Как узнать, какие сетевые диски подключены у пользователей | brudershaft | Скриптовые языки администрирования Windows | 14 | 28-04-2015 16:01 | |
[решено] Не открываются диски у других пользователей | polik | Оптические приводы | 1 | 14-06-2008 18:45 | |
Доступ - [решено] Как скрыть диски от пользователей | alleclf | Microsoft Windows 2000/XP | 5 | 30-05-2008 14:29 | |
[решено] сетевые диски у пользователей | kwinto | Microsoft Windows NT/2000/2003 | 5 | 07-08-2006 10:54 | |
Java - Не работает конструкция Java в Internet Explorer | AndreyV | Программирование и базы данных | 1 | 28-08-2002 17:26 |
|