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

    Dim objAD, objUserName, objComputerName
    Dim objFS, objFile
    Const strPath = "\\server\log.txt"
    Const ForAppending = 8
    Set objAD = CreateObject("ADSystemInfo")
    Set objUserName = GetObject("LDAP://" & objAD.UserName)
    Set objComputerName = GetObject("LDAP://" & objAD.ComputerName)
    Set objFS = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFS.OpenTextFile(strPath, ForAppending, True)
    objFile.WriteLine(Date & ";" & Time & ";" & objComputerName.cn & ";" & objUserName.cn)
    objFile.Close
    Set objFS = Nothing
    Set objFile = Nothing
    Set objUserName = Nothing
    Set objComputerName = Nothing
    Set objAD = Nothing
      ExpandedWrap disabled
        Dim objAD, objUserName, objComputerName
        Dim objFS, objFile
        Const strPath = "\\server\log.txt"
        Const ForAppending = 8
        Set objAD = CreateObject("ADSystemInfo")
        Set objUserName = GetObject("LDAP://" & objAD.UserName)
        Set objComputerName = GetObject("LDAP://" & objAD.ComputerName)
        If objAD.ComputerName <> "spb1"
          Set objFS = CreateObject("Scripting.FileSystemObject")
          Set objFile = objFS.OpenTextFile(strPath, ForAppending, True)
          objFile.WriteLine(Date & ";" & Time & ";" & objComputerName.cn & ";" & objUserName.cn)
          objFile.Close
          Set objFS = Nothing
          Set objFile = Nothing
        End If
        Set objUserName = Nothing
        Set objComputerName = Nothing
        Set objAD = Nothing
        Есть скрипт , который добавляет в дескрипшен компа имя залогиненого пользователя, можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD


        On Error Resume Next

        strComputer = "."

        Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        Set colComputer = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

        For Each objComputer In colComputer
        strNewDescription = objComputer.UserName
        Next

        st=right(strNewDescription,len(strNewDescription)-8)

        Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48)
        For Each objItem In colItems
        strNewDescription = objItem.FullName
        Next

        Set objWMIService = GetObject("winmgmts:\\" & strComputer).InstancesOf("Win32_OperatingSystem")
        For Each x In objWMIService
        x.Description = strNewDescription
        x.Put_
        Next
          Цитата alec1024 @
          ...можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD
          Приведённый Вами сценарий успешно выполняет указанную задачу. :)
          Совет: вместо конструкции
          ExpandedWrap disabled
            Set objWMIService = GetObject("winmgmts:" _
            & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
            Set colComputer = objWMIService.ExecQuery _
            ("Select * from Win32_ComputerSystem")
            For Each objComputer In colComputer
            strNewDescription = objComputer.UserName
            Next
            st=right(strNewDescription,len(strNewDescription)-8)
            Set colItems = objWMIService.ExecQuery( _
            "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48)
            For Each objItem In colItems
            strNewDescription = objItem.FullName
            Next

          можно использовать такой её аналог
          ExpandedWrap disabled
            Set objWSNet = CreateObject("WScript.Network")
            st = objWSNet.UserName
            strDomain = objWSNet.UserDomain
            Set objUser = GetObject("WinNT://" & strDomain & "/" & st & ",user")
            strNewDescription = objUser.FullName
          Сообщение отредактировано: Dmitrii -
            Цитата Dmitrii @
            Цитата alec1024 @
            ...можно ли зделать так чтобы подставлялся не логин а полное имя с фамилией из AD
            Приведённый Вами сценарий успешно выполняет указанную задачу. :)
            Совет: вместо конструкции
            ExpandedWrap disabled
              Set objWMIService = GetObject("winmgmts:" _
              & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
              Set colComputer = objWMIService.ExecQuery _
              ("Select * from Win32_ComputerSystem")
              For Each objComputer In colComputer
              strNewDescription = objComputer.UserName
              Next
              st=right(strNewDescription,len(strNewDescription)-8)
              Set colItems = objWMIService.ExecQuery( _
              "SELECT * FROM Win32_UserAccount WHERE Name='" & st & "'", , 48)
              For Each objItem In colItems
              strNewDescription = objItem.FullName
              Next

            можно использовать такой её аналог
            ExpandedWrap disabled
              Set objWSNet = CreateObject("WScript.Network")
              st = objWSNet.UserName
              strDomain = objWSNet.UserDomain
              Set objUser = GetObject("WinNT://" & strDomain & "/" & st & ",user")
              strNewDescription = objUser.FullName

            А не подскажете каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен?
              Цитата alec1024 @
              ... каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен?
              Если Вам известны имя и пароль учётной записи администратора домена или локального администратора удалённой станции, то так, например:
              ExpandedWrap disabled
                Dim strComputer, strDomain
                Dim strUser, strUserPass, strDescription
                Dim objWSNet, objUser
                Dim objLocator, objService
                Dim objCollection, objItem
                Set objWSNet = CreateObject("WScript.Network")
                strDomain = objWSNet.UserDomain
                Set objWSNet = Nothing
                strUser = "имя учётной записи администратора"
                strUserPass = "пароль учётной записи администратора"
                strComputer = "имя удалённой станции"
                Set objLocator = CreateObject("WbemScripting.SWbemLocator")
                Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", strDomain & "\" & strUser, strUserPass)
                Set objCollection = objService.InstancesOf("Win32_ComputerSystem")
                For Each objItem In objCollection
                    strDescription = objItem.UserName
                Next
                If IsNull(strDescription) Then
                    WScript.Echo "Имя пользователя не определёно."
                Else
                    strDescription = Replace(strDescription, "\", "/")
                    Set objUser = GetObject("WinNT://" & strDescription & ",user")
                    strDescription = objUser.FullName
                    Set objUser = Nothing
                    Set objCollection = objService.InstancesOf("Win32_OperatingSystem")
                    For Each objItem In objCollection
                        objItem.Description = strDescription
                        objItem.Put_
                    Next
                    Set objItem = Nothing
                    WScript.Echo "Готово."
                End If
                Set objCollection = Nothing
                Set objService = Nothing
                Set objLocator = Nothing
                Цитата Dmitrii @
                Цитата alec1024 @
                ... каким образом этот скрипт можно запустить на удаленном компьютере, на котором пользователь не админ. Ведь нужны админские права чтоб поменять дескрипшен?
                Если Вам известны имя и пароль учётной записи администратора домена или локального администратора удалённой станции, то так, например:
                ExpandedWrap disabled
                  Dim strComputer, strDomain
                  Dim strUser, strUserPass, strDescription
                  Dim objWSNet, objUser
                  Dim objLocator, objService
                  Dim objCollection, objItem
                  Set objWSNet = CreateObject("WScript.Network")
                  strDomain = objWSNet.UserDomain
                  Set objWSNet = Nothing
                  strUser = "имя учётной записи администратора"
                  strUserPass = "пароль учётной записи администратора"
                  strComputer = "имя удалённой станции"
                  Set objLocator = CreateObject("WbemScripting.SWbemLocator")
                  Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", strDomain & "\" & strUser, strUserPass)
                  Set objCollection = objService.InstancesOf("Win32_ComputerSystem")
                  For Each objItem In objCollection
                      strDescription = objItem.UserName
                  Next
                  If IsNull(strDescription) Then
                      WScript.Echo "Имя пользователя не определёно."
                  Else
                      strDescription = Replace(strDescription, "\", "/")
                      Set objUser = GetObject("WinNT://" & strDescription & ",user")
                      strDescription = objUser.FullName
                      Set objUser = Nothing
                      Set objCollection = objService.InstancesOf("Win32_OperatingSystem")
                      For Each objItem In objCollection
                          objItem.Description = strDescription
                          objItem.Put_
                      Next
                      Set objItem = Nothing
                      WScript.Echo "Готово."
                  End If
                  Set objCollection = Nothing
                  Set objService = Nothing
                  Set objLocator = Nothing

                Большое Спасибо!!!!!!

                А есть возможность этот скрипт запустить автоматом на всех компах домена ,без указывания конкретного компа?
                  Цитата alec1024 @
                  ... без указывания конкретного компа?
                  Здесь всё просто:
                  ExpandedWrap disabled
                    Set objWSNet = CreateObject("WScript.Network")
                    strComputer = objWSNet.ComputerName
                    Set objWSNet = Nothing

                  Цитата alec1024 @
                  А есть возможность этот скрипт запустить автоматом на всех компах домена...
                  Подразумевается использование групповой политики Конфигурация пользователя - Конфигурация Windows - Сценарии (вход/выход из системы)? Если - "да", то нельзя.
                  Впрочем, загляните сюда Полезные скрипты, сообщение #93. Можно попробовать задействовать указанный там способ.
                  Сообщение отредактировано: Dmitrii -
                    подскажите пожалуйста, как по логину в AD получить имя компьютера на котором он сидит? на входе логин, на выходе имя компьютера, в идеале с ip)
                      Цитата illus @
                      ... как по логину в AD получить имя компьютера на котором он сидит? на входе логин, на выходе имя компьютера, в идеале с ip)
                      Обратите внимание на сценарий, помещённый в сообщении 110 данной темы:
                      http://forum.sources.ru/index.php?showtopi...dpost&p=1857889
                      Здесь решается очень похожая задача.
                        c:\temp_script.sm(53, 1) (null): сетевой путь не найден , с чем может быть связана ошибка при запуске скрипта?
                        Сообщение отредактировано: illus -
                          Цитата illus @
                          c:\temp_script.sm(53, 1) (null): сетевой путь не найден , с чем может быть связана ошибка при запуске скрипта?

                          1. Что такое temp_script.sm?
                          2. При выполнении какой строки кода появляется такая ошибка?
                            в сообщении 110 данной темы я взял целиком код, однако, при выполнении появляется консольное окошко с данной ошибкой, адрес строки и подобные аттрибуты не указаны
                              Цитата illus @
                              ... адрес строки и подобные аттрибуты не указаны
                              Адрес строки с ошибкой указан: 53. Мы с Вами на него просто не обратили внимание. :)

                              Цитата illus @
                              в сообщении 110 данной темы я взял целиком код, однако, при выполнении появляется консольное окошко с данной ошибкой...
                              Следовало внимательно просмотреть код, прежде, чем использовать. В строке 53 надо указать реальное имя домена, вместо моего комментария.
                              Впрочем, чтобы не "связываться" с константой, строку
                              Const strDomane = "здесь - DNS-имя домена"
                              замените на фрагмент:
                              ExpandedWrap disabled
                                Dim strDomane, objWSNet
                                Set objWSNet = CreateObject("WScript.Network")
                                strDomane = objWSNet.UserDomain
                                Set objWSNet = Nothing

                              Наконец, стоит исправить и мою опечатку: в теле функции Computers_List() замените strDomane на strDomain (в коде исходного примера соответствующие исправления уже сделаны).
                              Сообщение отредактировано: Dmitrii -
                                Function Comuters_List(arrTemp)
                                Dim objAD, objComputer, strTemp, strList
                                Dim strDomain, objWSNet
                                Set objWSNet = CreateObject("WScript.Network")
                                strDomain = objWSNet.UserDomain
                                Set objWSNet = Nothing
                                Const strGroup = "Компьютеры домена"
                                Set objAD = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
                                For Each objItem In objAD.Members
                                If Not objItem.AccountDisabled Then
                                strTemp = objItem.Name
                                strList = strList & Left(strTemp, Len(strTemp) - 1) & vbNewLine
                                End If
                                Next
                                Set objAD = Nothing
                                arrTemp = Split(strList, vbNewLine)
                                Call Sorting_Array(arrTemp)
                                End Function

                                и я так понимаю что бы скрипт законектился к домену необходимо прописать имя домена в strDomain? Потому как скрипт утверждает что сетевой путь не найден.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (22) « Первая ... 12 13 [14] 15 16 ...  21 22


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