Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vby

Цитата:
Это немного не то, что нужно, в твоем примере возвращаеется код завершения программы,

Ну да, 0 - хост доступен, 1 - хост недоступен. Для этого обычно пинг и запускают
 
Тогда или в файл записывай oShell.Exec("cmd /c ping -n 1 192.168.1.1 >C:\result.txt")
или юзай StdIn\StdOut. Запускать cscript file.vbs, как-то так:

Код:

Set oShell = CreateObject("WScript.Shell")
Set oExec = oShell.Exec("ping -n 1 192.168.1.1")
Do While oExec.Status = Running
    WScript.Sleep 50
Loop
oExecText = oExec.StdOut.ReadAll
WScript.StdOut.Write oExecText

Не уверен, что правильно, вроде надо в цикле ждать StdOut.AtEndOfStream, но я думаю меня поправят
 
 
Добавлено:
О, не заметил, что efrik уже написал про StdOut

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 11:56 23-04-2008
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vby
Друже, именно пинговать надо?
могу дать готовый скрипт:
а)пингует скока хошь адресов
б)дает возможность игнорирования нескольких "неответов", наслучай если по пути на удаленный сервер косячная связь
в)посылает виндошное сообщение админу (net send) и(или) активируется сам окошком с сообщением

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 14:54 23-04-2008
vensen

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!
 
Задался таким вот вопросом...
как посредством VBSа подключать сетевые принтера, в зависимости от членства
пользователя в какой либо группе AD??
 
Т.е пользователям из группы "manager" подключать принтер \\comp1\HP ,  
а пользователям группы "buxUsers" подлючать принтер \\comp2\canon

Всего записей: 21 | Зарегистр. 03-04-2007 | Отправлено: 18:00 23-04-2008
Integer27h



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vensen
Есть скрипт подключат сетевые диски в зависимости от группы безопасности в AD.
Вместо сетевых дисков укажи принтера.

Код:
 
Option Explicit  
 
Dim WSHShell, WSHNetwork, user, domain, adspath, adsobj, prop, computer  
 
Set WSHNetwork = WScript.CreateObject( "WScript.Network")  
Set wshShell = WScript.CreateObject("WScript.Shell")  
 
Do While WSHNetwork.username = ""  
WScript.Sleep 250  
Loop  
 
user = wshNetwork.username  
domain = wshNetwork.userdomain  
computer= WSHNetwork.ComputerName
'Wscript.echo "Logging on " & ucase(domain) & "\" & user & "..."  
 
' используя ADSI получаем список групп, в которые входит пользователь  
adspath = "WinNT://" & domain & "/" & computer  
Set adsobj = GetObject(adspath)  
 
' Подключаем всем пользователям общие сетевые диски  
' диск X - обменник (автоматическое удаление содержимого в ночь на первое число каждого месяца)  
' диск Z - общие документы (только чтение)  
'  
'WSHNetwork.MapNetWorkDrive "X:", "\\server\temp$"  
'WSHNetwork.MapNetWorkDrive "Z:", "\\server\all$"  
 
'  
'Подключаем сетевые диски в зависимости от членства пользователя в группе безопасности  
'  
For each prop in adsobj.groups  
      select case prop.name  
      case "admin_comp"  
         WSHNetwork.MapNetWorkDrive "T:", "\\srv-admin\c$"                    
         WSHNetwork.MapNetWorkDrive "I:", "\\server\install$"    
         'MSgBox "Общий ресурс для aдминистраторов диск T:\"  
         'MSgBox "Инсталляшки диск I:\"  
           case "ПЭО"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\econom$"          
         WSHNetwork.MapNetWorkDrive "P:", "\\server\econom-buh$"  
         MsgBox "Общий ресурс для экономистов диск T:\"  
         MsgBox "Совместный ресурс для бухгалтеров и экономистов диск P:\"  
           Case "Бухгалтерия"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\buh$"  
         WSHNetwork.MapNetWorkDrive "P:", "\\server\econom-buh$"  
         MsgBox "Общий ресурс для бухгалтерии диск T:\"  
         MsgBox "Совместный ресурс для бухгалтеров и экономистов диск P:\"  
      case "Финансовый отдел"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\finans$"  
         MsgBox "Общий ресурс для финансового отдела диск T:\"  
      Case "Media"  
         WSHNetwork.MapNetWorkDrive "M:", "\\server\media_DFS$"  
         'MSgBox "Медия диск M:\"  
      case "Юристы"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\uro$"    
         MSgBox "Общий ресурс для юридического отдела диск T:\"  
      case "Отдел кадров"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\ok$"    
         MSgBox "Общий ресурс для отдела кадров диск T:\"  
      case "Руководство"  
         WSHNetwork.MapNetWorkDrive "T:", "\\server\general$"    
         MSgBox "Общий ресурс для руководства диск T:\"  
      end select  
Next  
 

 
 

Всего записей: 201 | Зарегистр. 11-09-2006 | Отправлено: 07:19 24-04-2008
vensen

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
to Integer27h
Пасибо за пример, почти заработало  но до конца не что-то срослось...
 
Нашел вроде немного "полегче":
'*** Start of Script ***
 
Dim FSObj 'File System Info
Dim GroupObj 'Group Info
Dim UserObj 'User Info
Dim WshNetwork 'Network Info
Dim WshShell 'Shell Object
Dim UserDomain 'User Logon Domain
 
'*** Inital Environment Setup
 
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserDomain = WshNetwork.UserDomain
'Set FSObj = CreateObject("Scripting.FileSystemObject")
Set UserObj = GetObject("WinNT://" & UserDomain & "/" & WshNetwork.UserName)
 
'*** Group Comparisons for Drive Mapping
 
For Each GroupObj in UserObj.Groups
 
If GroupObj.Name = "manager" Then
WshNetwork.AddWindowsPrinterConnection "\\comp1\HP"
End If
 
If GroupObj.Name = "buxUsers" Then
WshNetwork.AddWindowsPrinterConnection "\\comp2\canon"
End If
 
Next
 
мой, уже подправленный скрипт.

Всего записей: 21 | Зарегистр. 03-04-2007 | Отправлено: 17:11 24-04-2008
mixpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!  
 
Есть несколько взаимосвязаных вопросов...
 
1. в корпоративной сети понадобилось обнулить подписи всех пользывателей в Outlook.нашел скрипт :
 
On Error Resume Next  
Set objSysInfo = CreateObject("ADSystemInfo")  
strUser = objSysInfo.UserName  
Set objUser = GetObject("LDAP://" & strUser)  
strName = objUser.FullName
strTitle = "Title"
strCompany = "Company Name "
strAddress = "Address "
strCity = "City"
strDirectTel = "Tel: +"
strDirectCell="Cell: +"
strDirectFax = "Fax: +"
strPhone = "0000000"
strFax = "0000000"
strWeb= "www.web.com"
Set objWord = CreateObject("Word.Application")  
Set objDoc = objWord.Documents.Add()  
Set objSelection = objWord.Selection  
Set objEmailOptions = objWord.EmailOptions  
Set objSignatureObject = objEmailOptions.EmailSignature  
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries  
objSelection.ParagraphFormat.Alignment = wdAlignParagraphCenter  
objSelection.Font.Name = "Ariel"  
objSelection.Font.Size = "11"  
objSelection.Font.Color = vbBlack  
objSelection.Font.Bold = True  
objSelection.TypeText strName  
objSelection.TypeText CHR(11)  
objSelection.Font.Bold = False  
objSelection.TypeText strTitle  
objSelection.TypeText CHR(11)  
objSelection.TypeText strCompany  
objSelection.TypeText CHR(11)  
objSelection.TypeText CHR(11)
objSelection.TypeText strDirectTel   & strPhone
objSelection.TypeText CHR(11)  
objSelection.TypeText strDirectCell
objSelection.TypeText CHR(11)
objSelection.TypeText strDirectFax  & strFax
objSelection.TypeText CHR(11)
objSelection.TypeText CHR(11)
objSelection.TypeText strAddress  
objSelection.TypeText CHR(11)  
objSelection.TypeText strCity  
objSelection.TypeText CHR(11)  
objSelection.Hyperlinks.Add objSelection.range, "http://" & strWeb, , ,strWeb
Set objSelection = objDoc.Range()  
objSignatureEntries.Add "AD Signature", objSelection  
objSignatureObject.NewMessageSignature = "AD Signature"  
objSignatureObject.ReplyMessageSignature = "AD Signature"  
objDoc.Saved = True  
objWord.Quit
 
вроде бы все хорошо. но вдруг обнаружил что в Outlook 2007 если профиль открыт то  
подпись меняется без проблем. если профиль закрыт (вернее если  есть несколько профилей), подымается окно выбора профиля. после выбора также все успешно проходит. НО! в Outlook 2003 непроисходит ничего.
покапавши таки нашел созданую новую подпись в "C:\Documents and Settings\User\Application Data\Microsoft\Signatures". думаю если бы я мог выцепить имя профиля то можно было бы просто заменять старую подпись на новую прописывая вместо "AD Signature"- вопрос как узнать имя профиля? и вдогонку, как быть с несколькими профилями прописаными под одним юзером? нужно как то поднять окно для выбора нужного профиля....
 
2. для той же, подписи в AD по каждому пользывателю должны быть прописаны данные такие как номер сотого и рабочего телефона. как скинуть в excel, прописать и закинуть обратно не испортив то что уже прописано (например пароли).
заранее спасибо и извеняюсь если объяснил что надо, не самым грамотным языком...
 
Добавлено:
и еще пару вопросов интресующих меня очень давно...
1. каким образом средствами VBS можно узнать permissions файла/папки? и прописать это скажем в excel( естествено вместе с подпапками/файлами).
2. как грамотно с VBS поменять на всех компах имя и пароль локального админа?
в гугле такого валом но почему-то неработает...

Всего записей: 1 | Зарегистр. 24-04-2008 | Отправлено: 22:36 24-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Парни подскажите у приятеля при запуски скрипта вылетает "Отсутствует исполняющее ядро для расширения имени файла vbs"
С чем это связно и как это лечится?
Спасибо

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 13:49 21-05-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
Надо установить WSH.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 22:59 21-05-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
XXXXL 13:49 21-05-2008
Цитата:
С чем это связно и как это лечится?

 
Можно попробовать этот рецепт:
 

Цитата:
1. Запустить редактор реестра (Пуск -> Выполнить -> regedit)  
2. В редакторе реестра зайти в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings
3. Создать строковый параметр "Enabled", если он не создан.  
4. Присвоить ему значение 1.
 
Если вместо ожидаемого действия открывается блокнот, или открывается диалог для выбора программы запуска этого типа файлов (*.vbs), то делаем следующее:
 
Нужно открыть "Свойства папки" (в любой папке Windows - Сервис - Свойства папки) - Перейти во вкладку "Типы файлов" - найти там расширение VBS, нажать на найденный пункт, и нажать кнопку "Изменить", затем два раза кликнуть на пункт "Открыть", и прописать во втором сверху поле эту строку:
 
C:\WINDOWS\System32\WScript.exe "%1" %*
 
При необходимости изменить путь к системной папке (C:\Windows\System32).


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:14 21-05-2008
figaro1982



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
доброго времени суток!
может быть вы сможете подсказать как реализовать такую вещь:
Есть документ word - шаблон, в котором в некоторых местах стоят поля (они поставлены через меню ФОРМЫ в word).
Через скрипт задается запрос на ввод необходимых данных, после чего они вставляются в соответствующие поля документа.
много просмотрел материалов но так и не нашел нужного
Заранее благодарен.

Всего записей: 10 | Зарегистр. 14-07-2006 | Отправлено: 21:31 23-05-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
figaro1982
Вот. Как раз в тему.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:40 24-05-2008
figaro1982



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо, я видел эту статью
так к сожалению обещанного примера нет...

Всего записей: 10 | Зарегистр. 14-07-2006 | Отправлено: 16:51 24-05-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
figaro1982
Делаем так:
1. Открываем Word (одноременно создается новый документ).
2. Пишем в одном месте "Закладка 1", в другом - "Закладка 2".
3. Выделяем текст "Закладка 1" и через меню "Вставка - Закладка - Имя закладки" пишем "text1" - нажимаем кнопку "Добавить".
    Выделяем текст "Закладка 2" и через меню "Вставка - Закладка - Имя закладки" пишем "text2" - нажимаем кнопку "Добавить".
4. Меню "Файл - Сохранить как" сохраняем как шаблон документа (test.dot).
5. Запускаем такой скрипт:
word_test.vbs :
Код:
Set objWord = CreateObject("Word.Application")
With
objWord
    .Documents.Add "c:\Documents and Settings\mozers\Application Data\Microsoft\Шаблоны\test.dot", false
   
.
Visible = true
   
.
ActiveDocument.Bookmarks("text1").Range.Text = "Первое значение"
   
.ActiveDocument.Bookmarks("text2").Range.Text = "Второе значение"
End With
На основе сохраненного шаблона будет создан новый документ и заданные поля будут заполнены нашими значениями.

Цитата:
в некоторых местах стоят поля (они поставлены через меню ФОРМЫ в word)
Вот до таких полей достучатся у меня не получилось Имхо проще их заменить на Закладки. Хотя наверняка как то можно и в них писать...
 
Добавлено:
Придумал как и в эти поля писать:
Код:
.ActiveDocument.FormFields.Item("text4").Range.Text = "Четвертое значение"
Имя поля (в данном случае "text4") задается в Свойствах по правой кнопке мыши на поле.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 22:44 24-05-2008 | Исправлено: mozers, 23:15 24-05-2008
Bugavka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени суток.
Помогите решить такую задачку. Создается новый юзер, для него создаются папки, нужно VBSом сделать юзера Владельцем этих папок. Реально такое?

Всего записей: 21 | Зарегистр. 15-05-2008 | Отправлено: 13:24 26-05-2008
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Bugavka реально. я сделал скрипт на основе примеров из MS AdsiSDK, в инете есть и более легковесные.  
В этой теме http://forum.ru-board.com/topic.cgi?forum=8&topic=19088 наверное быстрее можно найти

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 23:09 26-05-2008
Angel Hranite



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
доброй ночи. есть програмка при запуске которой выполняется VBScript. Скрипт должен создавать Папку рядом с запускаемым файлом и называть ее по названию приложения (без расширения) + имя компьютера. Как создавать папку я разобрался, а вот как узнать имя приложения и петь до него (чтобы папка была рядом)?
P.S.: путь может быть и сетевым (например, \\server\abv\ или C:\123\abv)
 
папку создаю так
Цитата:
set WshShell = WScript.CreateObject("WScript.Shell")  
Set fso = CreateObject("Scripting.FileSystemObject")  
folder_name = WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")  
path_name = WshShell.ExpandEnvironmentStrings("%HOMEPATH%")  
if not fso.FolderExists (path_name & folder_name) then  
fso.GetFolder(path_name).SubFolders.Add (folder_name)  
end if

Всего записей: 51 | Зарегистр. 14-05-2008 | Отправлено: 23:32 26-05-2008
MrTom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет!
 
Есть задача: работа с COM-объектом из скрипта. Да вот только свойства и методы у этого объекта названы кириллицей (что-то типа object.коллекция.количество)
 
Кто сталкивался с такой бедой, подскажите плиз: средствами vbs это возможно?
Сколько ни рылся по рунету - ничего найти не могу  
Правда, в скриптах я не силен... так что не ругайтесь сильно, если фигню спросил

Всего записей: 94 | Зарегистр. 17-10-2007 | Отправлено: 14:01 29-05-2008 | Исправлено: MrTom, 14:05 29-05-2008
megamozg13



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 У меня существует плавающая ошибка в Win2003, сначала служба SRV падает с сообщением об "невозможно выгрузить пул из..." потом все отсальные по тиху и в итоге букс сервера (хотя проде как и синих экранов нет).
 Сварганил, легкий скиптик ловящий отказ сетевых служб, может еще кому сгодится:

Цитата:
 
// auto_reboot.js
// инициализация
Shell=WScript.CreateObject("WScript.Shell");
fso=new ActiveXObject("Scripting.FileSystemObject");  
comp=Shell.ExpandEnvironmentStrings("%COMPUTERNAME%");
wdir=Shell.ExpandEnvironmentStrings("%SystemRoot%");  
key_file_net="\\\\"+comp+"\\ADMIN$\\-AUTO_REBOOT-";
key_file_loc=wdir+"\\-AUTO_REBOOT-";
// создание файла маячка
try { key_file=fso.CreateTextFile(key_file_loc,true) }
catch(e){WScript.Echo("Ошибка создания ключевого файла: "+key_file_loc);WScript.Quit(0);};    
key_file.WriteLine("-AUTO_REBOOT-"); key_file.Close();
// ждем, пока файл маячек доступен по сети  
do { WScript.Sleep(5000); }
while(fso.FileExists(key_file_net));
// пропал доступ, ребут срочно
Rbt=Shell.Run(wdir+"\\System32\\shutdown.exe -r -f",1,true);
// cообщение о перезагрузке сервера
//Msg=Shell.Run(wdir+"\\System32\\net.exe send * Сервер принудительно перезапущен,
// немедленно обратитесь к администратору.",1,true);
 

 

Всего записей: 313 | Зарегистр. 27-07-2004 | Отправлено: 12:08 05-06-2008
Count S

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Ни у кого не завалялось скриптика который бы удалял заданные типы файлы на удаленном компьютере, в определенной папке?  
Собственно требуется, удалять все файлы с расширениями .avi, .mp3, ,wmv и т.п. из рабочей папки пользователя в Documents and Settings.
Заранее спасибо.

Всего записей: 2 | Зарегистр. 05-06-2008 | Отправлено: 16:24 05-06-2008
Cyril Konst



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такой скриптик:

Код:
 
Set objShell = Wscript.CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colRetrievedEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent where LogFile='System' and SourceName='Print' and EventCode = '2'")
For Each objEvent in colRetrievedEvents
     Wscript.Echo objEvent.Message
Next
 

Можно ли в самом "Select..." задать ограничение на выбор только одной самой новой записи?
Или обойтись без For Each, прочитать только первое сообщение.

Всего записей: 634 | Зарегистр. 12-08-2003 | Отправлено: 09:42 07-06-2008 | Исправлено: Cyril Konst, 10:56 07-06-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru