На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Windows
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда "Поставь Linux".
4. Переустановка ОС - крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов - только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Модераторы: Akina
Страницы: (22) « Первая ... 3 4 [5] 6 7 ...  21 22  ( Перейти к последнему сообщению )  
> Полезные скрипты , WSH (js, vbs) + WMI
    Цитата qwester @
    Те получить просто имя провайдера (например в программе WMI CIM Studio или в чем то подобном) невозможно?

    Я пасс, не знаю.
    Если у вас машина входит в домен, то значительно большую защиту машин (чем антивирусом) вы можете обеспечить путем перевода машин в юзер-моду с ограничением доступа к системным каталогам.
      Жаль :(, может кто еще подскажет.

      А по поводу защиты - проверка NAV это один из пунктов. Там много всяких проверок - на присутствие update от мелкософта (по Microsoft Security Bulletin). К тому же подключаться могут через VPN с личных/домашних ПК и их загонять в юзер-моду с ограниченьями - моветон.

      И вот на этом самом пункте и произошел затык. Попытка использовать WMI/WSC - из-за ответа Symantec которое я процитировал выше. Хотя как мне кажется это просто отписка :(.
        Цитата 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 так сильно и "любят" симантек, уронить производительность системы в несколько раз - это у них запросто, а вот дать интерфейс на то чтобы проверить статус работает ли этот монстр или нет - это видимо сложно.
          Всем привет. Уже долго роюсь в нете в поисках какой-то инфы по поводу написанию VBScript-ов. :wall: Может кто-то спасти Если у кого-то есть какие-то ссылки, буду очень рад :)
            Цитата DataKill @
            Уже долго роюсь в нете в поисках какой-то инфы по поводу написанию VBScript-ов.

            Полезные скрипты (сообщение #1520549)
              Цитата 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:
              ExpandedWrap disabled
                'Список всех 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:
              ExpandedWrap disabled
                'Определение списка классов для заданного провайдера
                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, реализован в форме службы, то можно попытаться оценить его активность по состоянию этой службы. Вот пример сценария:
              ExpandedWrap disabled
                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, но попроще.
              Надеюсь, что хоть чем-нибудь помог Вам. :)
              Сообщение отредактировано: Dmitrii -
                Сенкс всем!
                Как оказалось - ларчик просто открывался :

                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 :)
                  В скриптинге только учусь не помогли бы вы мне с одной проблемкой.

                  Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней.


                  date_1 = date()
                  date_2 = date()

                  Как перевести дату в формат timestamp ? или тут такого нет ? :(
                  Сообщение отредактировано: bond009 -
                    Цитата bond009 @
                    Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней.

                    Используйте функцию DateDiff()
                      Цитата Dmitrii @
                      Мне нужно например дату сравнить с другой датой и выяснить разницу количество дней

                      можно так (jscript):
                      ExpandedWrap disabled
                        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
                        Цитата AlexLine @
                        Скрипт отображающий в параметре Comp_Display_Name FullName залогиненого на машину пользователя

                        Не могли бы подсказать как это сделать? я скрипты никогда не писала.
                        Мне нужно чтобы скажем ко мне на почту отсылалось или просто в какйо-то лог писалось под каким именем на любом компьютере в локальной сети вошли.

                        И еще можно как-то соорудить скрипт или что-то иное, чтобы также логилось или отсылалось кто в сети запустил программу из меню "Запуск от имени"?
                          Люди Хелп!!!
                          Живу в общежитии. Собираемся проводить сеть (приблизительно 100 комнат). Хотелося бы написать скрипт, для автоматической настройки сети. Чтоб при запуске скрипта, на каждом компьютере устанавливались персональные настройки (IP, маска, шлюз, DNS-сервер и т.д.). Желательно, чтоб еще IP адрес менялся автоматически. Заранее спасибо :)
                            DataKill, а DHCP поднять не судьба?
                              Воспользовшись имеющимся здесь скриптом (разница: strAttributes = "cn,sAMAccountName") получила файл с именами пользователей ActiveDirectory в таком виде:
                              имя пользователя|логин|пароль
                              Например: Иванов Иван Иваныч|IvanovII|iva23

                              Не получается только пароль вытащить, вернее не знаю какой это параметр, просто Password не подходит. Подскажите, можно ли вытащить имеющийся параоль? Поэтому пока пароль у всех писался в файл одинаковый.

                              Птом на основе этого файла можно внести пользователей в ActiveDirectory в случае переустановки или т.п.
                              Для этого используется скрипт:

                              ExpandedWrap disabled
                                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. Как поставить галочку нельзя менять пароль в свойствах пользователя??? какой код?
                                Доброго времени суток.

                                Вопрос, как с локального компьютера примапить диск? Примапить из домена, локальный в воркгруппе, юзер и пароль соответсвенно известны. Точнее задача -- как передать в теле скрипта username и password.

                                Заранее спасибо!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (22) « Первая ... 3 4 [5] 6 7 ...  21 22


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0493 ]   [ 15 queries used ]   [ Generated: 6.10.24, 11:20 GMT ]