Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.239.150.167] |
|
Страницы: (22) « Первая ... 3 4 [5] 6 7 ... 21 22 ( Перейти к последнему сообщению ) |
Сообщ.
#61
,
|
|
|
Цитата qwester @ Те получить просто имя провайдера (например в программе WMI CIM Studio или в чем то подобном) невозможно? Я пасс, не знаю. Если у вас машина входит в домен, то значительно большую защиту машин (чем антивирусом) вы можете обеспечить путем перевода машин в юзер-моду с ограничением доступа к системным каталогам. |
Сообщ.
#62
,
|
|
|
Жаль , может кто еще подскажет.
А по поводу защиты - проверка NAV это один из пунктов. Там много всяких проверок - на присутствие update от мелкософта (по Microsoft Security Bulletin). К тому же подключаться могут через VPN с личных/домашних ПК и их загонять в юзер-моду с ограниченьями - моветон. И вот на этом самом пункте и произошел затык. Попытка использовать WMI/WSC - из-за ответа Symantec которое я процитировал выше. Хотя как мне кажется это просто отписка . |
Сообщ.
#63
,
|
|
|
Цитата qwester @ Попытка использовать WMI/WSC - из-за ответа Symantec которое я процитировал выше. Хотя как мне кажется это просто отписка . Не похоже, "We do not publish any interfaces to query whether we are installed or what the status is for the various features." Это скорее всего их "ноу-хау" или не документированный интерфейс, за что сцецы IT так сильно и "любят" симантек, уронить производительность системы в несколько раз - это у них запросто, а вот дать интерфейс на то чтобы проверить статус работает ли этот монстр или нет - это видимо сложно. |
Сообщ.
#64
,
|
|
|
Всем привет. Уже долго роюсь в нете в поисках какой-то инфы по поводу написанию VBScript-ов. Может кто-то спасти Если у кого-то есть какие-то ссылки, буду очень рад
|
Сообщ.
#65
,
|
|
|
Цитата DataKill @ Уже долго роюсь в нете в поисках какой-то инфы по поводу написанию VBScript-ов. Полезные скрипты (сообщение #1520549) |
Сообщ.
#66
,
|
|
|
Цитата qwester @ Если ещё актуально, то предложу пару советов. Сразу оговорюсь, что на практике с такой задачей никогда не сталкивался, поэтому советы будут носить исключительно теоретический характер.Возникла необходимость проверять запущен ли Norton Antivirus на ПК. С NAV до 2007 проблем не возникает - проверяется процесс и запись в реестре на дату обновления антивирусной базы. В 2007 подобное не получается. Список процессов не меняется вне зависимости от того активен ли "Auto protect" или выключен. 1. Поиск WMI-провайдера для NAV. 1.1. Определяем список всех WMI-провайдеров в раскладке по пространствам имён (пример сценария - ниже). 1.2. Ориентируясь на названия пространств имён и провайдеров (к сожалению, я не знаю, можно ли идентифицировать провайдера по его вендору), пытаемся выбрать тот, который мог бы относиться к NAV. 1.3. Используя выбранные названия пространства имён и работающего в нём провайдера, определяем список классов, с которыми данный провайдер работает (пример сценария - ниже). 1.4. Используя какую-либо утилиту типа "WMI CIM Studio", смотрим описание найденных классов. Сценарий для пункта 1.1: 'Список всех WMI-провайдеров для всех пространств имён Dim strTemp, arrNameSpace, objWMI, objCollection, objItem Dim objFS, objFile Const strCompName = "." 'для работы с удалённой станцией замените точку на dns-имя станции Const strResFile = "C:\List_WMI_Providers.txt" Call Enum_NameSpaces("root", strTemp) arrNameSpace = Split(Left(strTemp, Len(strTemp) - 1), ";") strTemp = vbNullString For i = LBound(arrNameSpace) To UBound(arrNameSpace) Set objWMI = GetObject("winmgmts:\\" & strCompName & "\" & arrNameSpace(i)) Set objCollection = objWMI.InstancesOf("__Win32Provider") If objCollection.Count > 0 Then strTemp = strTemp & UCase(arrNameSpace(i)) & vbCrLf & "---" & vbCrLf For Each objItem In objCollection strTemp = strTemp & objItem.Name & vbCrLf Next strTemp = strTemp & vbCrLf & vbCrLf End If Next Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.CreateTextFile(strResFile, True) objFile.Write (strTemp) WScript.Echo "Готово." Function Enum_NameSpaces(strNameSpace, strTemp) Dim objWMI, objCollection, objItem strTemp = strTemp & strNameSpace & ";" Set objWMI = GetObject("winmgmts:\\" & strCompName & "\" & strNameSpace) Set objCollection = objWMI.InstancesOf("__NAMESPACE") For Each objItem In objCollection Call Enum_NameSpaces(strNameSpace & "\" & objItem.Name, strTemp) Next Set objCollection = Nothing Set objWMI = Nothing End Function Сценарий для пункта 1.3: 'Определение списка классов для заданного провайдера Dim objWMI, objCollection, objClass, objClassQual Dim strProvName, arrProvClasses(), intItem Dim objFS, objFile Const strCompName = "." 'для работы с удалённой станцией замените точку на dns-имя станции Const strNameSpace = "root\default" 'замените на название выбранного пространства имён Const strFindProv = "RegProv" 'замените на название выбранного провайдера Const strResFile = "C:\List_WMI_Classes.txt" intItem = 0 Set objWMI = GetObject("winmgmts:\\" & strCompName & "\" & strNameSpace) Set objCollection = objWMI.SubclassesOf() For Each objClass In objCollection For Each objClassQual In objClass.Qualifiers_ If LCase(objClassQual.Name) = "dynamic" Then strProvName = Detect_ProviderName(objClass) If Len(strProvName) > 0 Then If StrComp(strProvName, strFindProv, vbTextCompare) = 0 Then intItem = intItem + 1 ReDim Preserve arrProvClasses(intItem) arrProvClasses(intItem) = objClass.Path_.Class End If End If End If Next Next Set objCollection = Nothing Set objWMI = Nothing If intItem > 0 Then arrProvClasses(0) = "Кол-во классов: " & intItem Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.CreateTextFile(strResFile, True) For i = 0 To intItem objFile.WriteLine (arrProvClasses(i)) Next objFile.Close Set objFile = Nothing Set objFS = Nothing WScript.Echo "Готово." Else WScript.Echo "Ничего не найдено." End If Function Detect_ProviderName(objC) Dim objCQ, strTemp strTemp = vbNullString For Each objCQ In objC.Qualifiers_ If LCase(objCQ.Name) = "provider" Then strTemp = objCQ.Value Exit For End If Next Detect_ProviderName = strTemp End Function 2. Определение активности антивирусного сторожа. Если сторож в NAV, подобно сторожу в DrWeb, реализован в форме службы, то можно попытаться оценить его активность по состоянию этой службы. Вот пример сценария: Dim objWMI, objCollection, objItem Const strCompName = "." 'для работы с удалённой станцией замените точку на dns-имя станции Const strServiceName = "SpIDer Guard for Windows NT" 'замените на выводимое имя службы для NAV, 'т.е. на то, которое отображается в колонке "Имя" окна "Службы" Set objWMI = GetObject("winmgmts:\\" & strCompName & "\root\CIMV2") Set objCollection = objWMI.ExecQuery("select * from Win32_Service where DisplayName='" & strServiceName & "'") If objCollection.Count > 0 Then For Each objItem In objCollection Wscript.Echo "Активность службы: " & CStr(objItem.Started) Next Else Wscript.Echo "Ничего не найдено." End If Set objCollection = Nothing Set objWMI = Nothing Напоследок предложу пару ссылок на полезные утилиты для интерактивной работы с WMI: WMICodeCreator Scriptomatic2 Они подобны WMI CIM Studiuo, но попроще. Надеюсь, что хоть чем-нибудь помог Вам. |
Сообщ.
#67
,
|
|
|
Сенкс всем!
Как оказалось - ларчик просто открывался : On Error Resume Next Set oWMI = GetObject("winmgmts:\\.\root\SecurityCenter") Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct") naw = "Norton AntiVirus not Installed" For Each item In colItems if (item.displayName = "Norton AntiVirus") then if (item.onAccessScanningEnabled = "True") then naw = "Norton AntiVirus Active" else naw = "Norton AntiVirus not Active" end if end if WScript.Echo naw Next Вместо WScript.Echo naw - используется что угодно для передачи параметра куда необходимо. Так же есть item.productUptoDate и item.versionNumber |
Сообщ.
#68
,
|
|
|
В скриптинге только учусь не помогли бы вы мне с одной проблемкой.
Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней. date_1 = date() date_2 = date() Как перевести дату в формат timestamp ? или тут такого нет ? |
Сообщ.
#69
,
|
|
|
Цитата bond009 @ Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней. Используйте функцию DateDiff() |
Сообщ.
#70
,
|
|
|
Цитата Dmitrii @ Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней можно так (jscript): var d1 = new Date("12/31/2006"); var d2 = new Date("9/13/2007"); var d3 = d2-d1; // разница в миллисекундах // d3/1000 = sec // (d3/1000)/60 = min // (d3/1000/60)/60 = hour // (d3/1000/60/60)/24 = days WScript.Echo(d3/1000/60/60/24); // = ~256 |
Сообщ.
#71
,
|
|
|
Цитата AlexLine @ Скрипт отображающий в параметре Comp_Display_Name FullName залогиненого на машину пользователя Не могли бы подсказать как это сделать? я скрипты никогда не писала. Мне нужно чтобы скажем ко мне на почту отсылалось или просто в какйо-то лог писалось под каким именем на любом компьютере в локальной сети вошли. И еще можно как-то соорудить скрипт или что-то иное, чтобы также логилось или отсылалось кто в сети запустил программу из меню "Запуск от имени"? |
Сообщ.
#72
,
|
|
|
Люди Хелп!!!
Живу в общежитии. Собираемся проводить сеть (приблизительно 100 комнат). Хотелося бы написать скрипт, для автоматической настройки сети. Чтоб при запуске скрипта, на каждом компьютере устанавливались персональные настройки (IP, маска, шлюз, DNS-сервер и т.д.). Желательно, чтоб еще IP адрес менялся автоматически. Заранее спасибо |
Сообщ.
#73
,
|
|
|
DataKill, а DHCP поднять не судьба?
|
Сообщ.
#74
,
|
|
|
Воспользовшись имеющимся здесь скриптом (разница: strAttributes = "cn,sAMAccountName") получила файл с именами пользователей ActiveDirectory в таком виде:
имя пользователя|логин|пароль Например: Иванов Иван Иваныч|IvanovII|iva23 Не получается только пароль вытащить, вернее не знаю какой это параметр, просто Password не подходит. Подскажите, можно ли вытащить имеющийся параоль? Поэтому пока пароль у всех писался в файл одинаковый. Птом на основе этого файла можно внести пользователей в ActiveDirectory в случае переустановки или т.п. Для этого используется скрипт: Set objParent = GetObject("LDAP:// dc=my, dc=rus") Dim fso, f On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("C:\Users.txt", 1, False) if Err.Number<>0 then call Error_(0) Else while not f.atEndOfStream s = Split(f.ReadLine,"|") 'UserName="имя пользователя" 'UserFam="фамилия пользователя" UserFIO=s(0) UserAccount=s(1) UserPass=s(2) 'WScript.Echo UserFIO & " " & UserAccount & " " & UserPass Set objUser = objParent.Create("user","cn=" & UserFIO) 'имя аккаунта objUser.Put "sAMAccountName", UserAccount 'логин objUser.Put "userPrincipalName", UserAccount & "@my.rus" 'логин 'objUser.Put "givenName", UserName 'имя 'objUser.Put "sn", UserFam 'фамилия objUser.Put "displayName", UserFIO 'выводимое имя objUser.Put "homeDrive", "Z" 'имя диска для подключения домашнего каталога objUser.Put "homeDirectory", "<путь>" & UserAccount 'домашний каталог пользователя objUser.Put "scriptPath", "<имя файла сценария>" 'сценарий входа objUser.SetInfo objUser.SetPassword(UserPass) 'пароль objUser.SetInfo objUser.AccountDisabled=FALSE 'учетная запись активна objUser.SetInfo objUser.Put "userAccountControl", 65536 'срок действия пароля не ограничен objUser.SetInfo Err.Clear wend f.Close end if Можно сказать, что все работает, но есть пару вопросов, которые не знаю как реализовать: 1. В консоли ActiveDirectory все пользователи размещаются не просто в домене а в подпапке (подразделе) Users, как там создавать пользователя???? не вышло пока никак, на ou=Users ругается 2. Как поставить галочку нельзя менять пароль в свойствах пользователя??? какой код? |
Сообщ.
#75
,
|
|
|
Доброго времени суток.
Вопрос, как с локального компьютера примапить диск? Примапить из домена, локальный в воркгруппе, юзер и пароль соответсвенно известны. Точнее задача -- как передать в теле скрипта username и password. Заранее спасибо! |