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

          8.8.1 Problem
          You want to find inactive computer accounts in a domain.

          8.8.2 Solution

          These solutions only apply to Windows-based machines. Other types of machines (e.g., Unix) that have accounts in Active Directory may not update their login timestamps or passwords, which are used to determine inactivity.

          8.8.2.1 Using a command-line interface
          The following query will locate all inactive computers in the current forest:

          > dsquery computer forestroot -inactive <NumWeeks>
          You can also use domainroot in combination with the -d option to query a specific domain:

          > dsquery computer domainroot -d <DomainName> -inactive <NumWeeks>
          or you can target your query at a specific container:

          > dsquery computer ou=MyComputers,dc=rallencorp,dc=com -inactive <NumWeeks>

          This can only be run against a Windows Server 2003 domain functional level or higher domain.


          2Moderators: Снесите плз треды о определении "старых" учетных записях в отдельную тему.
            Господа, подсобите скрипт, чтобы прикрутить в GPO, для автозапуска приложения с шары в домене один раз на каждом ПК. И чтобы не выдавал сообщение "не удается проверить издателя" (хотя если шара в домене и путь netbios, то вроде не должна)
              Доброго времени суток.

              Нет ли у кого скрипта для установки скринсейвера?
                ExpandedWrap disabled
                   '************************************************************
                  '* Имя: Sendmail Lotus                                       *
                  '* Язык: VBScript                                            *
                  '* Назначение: Отправка почты через клиент Lotus Notes       *
                  '*             с вложенным файлом с диалогом выбора файла    *
                   '***********************************************************
                      
                      On Error Goto 0: sendLNMail()
                      Dim s
                      Dim db
                      Dim doc
                      Dim rtitem
                      Dim subj
                      Dim bdy
                      Dim recips(2)
                      'File System Object Decs
                      Dim fs
                      Dim fName
                      Dim path
                      Sub sendLNMail()
                      On Error Resume Next
                      '///////////////////////////////////////
                      '     ////////////////////////////////
                      'Begin Error/Input Routines
                      'Created by Steven Jacobs
                      '2004
                      '///////////////////////////////////////
                      '     ////////////////////////////////
                      'Get subject...if no subject, exit sub
                      'subj = inputbox("Please enter a subject For your mail memo.","Email Subject Text")
                      subj = "Тема письма" ' тут указываем тему пиьма
                      if subj = "" Then
                      MsgBox "Введите тему"
                      Exit Sub
                      End if
                      'Get body text...if no body text, exit s
                      '     ub
                      'bdy = inputbox("Please enter text For your body mail memo.","Email Body Text")
                      bdy = "C уважением," & chr (10) & _ ' тут пишем текст пиьма
                             "Vladimir" & chr (10) & _
                             "Пользователь форума Исходники.ру" & chr (10) & _
                             "тел. (012345) 1-23-45"
                      if bdy = "" Then
                      MsgBox "Введите тест письма"
                      Exit Sub
                      End if
                      Set fs = createobject("Scripting.FileSystemObject")
                      if fs Is Nothing Then
                      MsgBox "Could Not Create FileSystemObject",16,"File System Object Error."
                      endMe
                      Exit Sub
                      End if
                   
                  Set objDialog = CreateObject("UserAccounts.CommonDialog")
                   
                  objDialog.Filter = "CSV файлы|*.csv|Zip архивы|*.zip|All Files|*.*" ' форматы файлов для вложений
                  objDialog.FilterIndex = 0
                  objDialog.InitialDir = "d:\" ' путь по умолчанию в диалоге открытия файла
                  intResult = objDialog.ShowOpen
                   
                  If intResult = 0 Then
                  msgbox "Файл не выбран!", vbExclamation, "Внимание!"
                      Wscript.Quit
                  Else
                      'Wscript.Echo objDialog.FileName
                  fName = objDialog.FileName
                   
                  Set objFSO = CreateObject("Scripting.FileSystemObject")
                  End If
                   
                      'fName = inputbox("Please enter the full path For the file","Enter Full Path To File","C:\")
                      'if fName = "" Then
                      'MsgBox "Empty Path"
                      'endMe
                      'Exit Sub
                      'End if
                      path = fs.GetAbsolutePathName(fName)
                      if Not fs.FileExists(path) Then
                      MsgBox "Файл не существует в данной папке"
                      endMe
                      End if
                      '///////////////////////////////////////
                      '     ////////////////////////////////
                      'End Error/Input Routines
                      '///////////////////////////////////////
                      '     ////////////////////////////////
                      Set s = createobject("Notes.NotesSession")
                      if s Is Nothing Then
                      MsgBox "Ошибка создания сессии Lotus. Проверьте запущен ли Lotus",16,"Notes Session Error."
                      endMe
                      Exit Sub
                      End if
                      'See if we can create the main object (s
                      '     ession)
                      if Err.Number <> 0 Then
                      On Error Goto 0
                      MsgBox "Could Not create session 'Lotus Notes' from object"
                      Exit Sub
                      End if
                      Set db = s.getdatabase(s.getenvironmentstring("MailServer",True),s.getenvironmentstring("Mailfile",true))
                      'See if we can a handle on the mail file
                      '    
                      if Err.Number <> 0 Then
                      On Error Goto 0
                      MsgBox "Could find or Get a handle on the mail file"
                      Exit Sub
                      End if
                      Set doc = db.createdocument
                      Doc.SAVEMESSAGEONSEND = True
                      Set rtitem = doc.createrichtextitem("BODY")
                      recips(1) = "Email@mail.com" ' указываем адрес получателя
                      'recips(2) - "rrr@rrr.com"
                      With doc
                      .form = "Memo"
                      .subject = subj
                      .sendto = "Email@mail.com" ' указываем адрес получателя
                      '.copyto = "<yyy>@yyy.com"
                      .body = bdy
                      .postdate = Date
                      End With
                      call rtitem.embedobject(1454,"",fName)
                      doc.visible = True
                      doc.send False
                      'if we made it this far, alert the user
                      '     the mail memo has been created and sent
                  MsgBox "Файл: " & fName & " успешно отправлен" & chr(10) & _
                  chr(13) & "Спасибо!",64,"Message Sent Notification."
                      endMe
                      End Sub
                      Sub endMe()
                      'clean objects/memory
                      Set s = nothing
                      Set db = nothing
                      Set doc = nothing
                      Set rtitem = nothing
                      Set fs = nothing
                      End Sub

                для работы этого скрипта (вернее для диалога выбора файла) нужна зарегистрированная comdlg32.ocx
                Как переделать этот код, чтобы можно было выбрать для вложения и отправки несколько файлов??
                и еще... есть такая задача: приходят с одного адреса письма с вложениями (два архива 11.zip и 14.zip), нужно их открепить от письма (извлечь) в папку на диск (нпар. c:\Inbox\). Потом эти два архива распаковать и несколько извлеченных файлов отпраить по другим адресам...
                Сообщение отредактировано: vladimir_02 -
                  ExpandedWrap disabled
                    '*************************************************************************************
                    '* Имя: Volumes_to_DiskDrives_Associator.vbs                                         *
                    '* Язык: VBScript                                                                    *
                    '* Назначение: Сопоставление логических томов, назначенных съёмным накопителям,      *
                    '*             с физическими устройствами.                                           *
                    '*             Типы съёмных накопителей, на работу с которыми ориентирован сценарий: *
                    '*             Flash-диски, Flash-карты, ZIP-диски.                                  *
                    '*************************************************************************************
                     
                    Dim objWMI, objLogicalDisks, objLD
                    Dim objPartitions, objPart, objDrives, objDrive
                    Dim strComputer, strTemp
                     
                    strComputer = "."
                    Set objWMI = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
                    Set objLogicalDisks = objWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=2")
                    For Each objLD In objLogicalDisks
                         Set objPartitions = objWMI.ExecQuery("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=""" & _
                                              objLD.DeviceID & _
                                              """} WHERE AssocClass=Win32_LogicalDiskToPartition")
                         For Each objPart In objPartitions
                              Set objDrives = objWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
                                               objPart.DeviceID & _
                                               """} WHERE AssocClass=Win32_DiskDriveToDiskPartition")
                              For Each objDrive In objDrives
                                   strTemp = strTemp & objLD.DeviceID & " => " & objDrive.Caption & _
                                              " (Диск " & objDrive.Index & ")" & vbNewLine
                              Next
                              Set objDrive = Nothing
                              Set objDrives = Nothing
                         Next
                         Set objPart = Nothing
                         Set objPartitions = Nothing
                    Next
                    Set objLD = Nothing
                    Set objLogicalDisks = Nothing
                    Set objWMI = Nothing
                    If Len(strTemp) = 0 Then
                        strTemp = "Накопителей указанного типа не обнаружено."
                    End If
                    WScript.Echo strTemp
                    WScript.Quit 0
                    ExpandedWrap disabled
                      '********************************************************************************
                      '* Имя: Get_Pinters_List_in_AD.vbs                                              *
                      '* Язык: VBScript                                                               *
                      '* Назначение: Создание списка всех опубликованных в Active Directory принтеров *
                      '*             путём запроса с помощью ADO.                                     *
                      '********************************************************************************
                      Dim objRoot, objConnection, objCommand, objRSet
                      Dim intNumRecords, strDomain, strLog, arrTemp, strLine, strTemp
                      Dim objFS, objFile, objWShell
                      Dim strTranslator, blnIsConsole
                       
                      Set objFS = CreateObject("Scripting.FileSystemObject")
                      strTranslator = objFS.GetBaseName(WScript.FullName)
                      If StrComp(strTranslator, "cscript", vbTextCompare) = 0 Then
                          blnIsConsole = True
                      Else
                          blnIsConsole = False
                      End If
                      strLog = "Printers_List_in_AD.log"
                      Set objRoot = GetObject("LDAP://RootDSE")
                      strDomain = objRoot.Get("DefaultNamingContext")
                      Set objRoot = Nothing
                      Set objConnection = CreateObject("ADODB.Connection")
                      objConnection.Provider = "ADsDSOObject"
                      objConnection.Open "Active Directory Provider"
                      Set objCommand = CreateObject("ADODB.Command")
                      Set objCommand.ActiveConnection = objConnection
                      strAttributes = "printerName,uNCName,portName,driverName,serverName,shortServerName,Location"
                      objCommand.CommandText = "<LDAP://" & strDomain & ">;(objectCategory=printQueue);" & strAttributes & ";Subtree"
                      objCommand.Properties("Page Size") = 1000
                      objCommand.Properties("Timeout") = 30
                      On Error Resume Next
                      Set objRSet = objCommand.Execute
                      If Err.Number = 0 Then
                          intNumRecords = objRSet.RecordCount
                          If intNumRecords > 0 Then
                              strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog)
                              Set objFile = objFS.CreateTextFile(strLog, True)
                              If Err.Number = 0 Then
                                  strLine = "Обнаружено записей: " & intNumRecords & vbNewLine & "==="
                                  objFile.WriteLine strLine
                                  If blnIsConsole Then WScript.Echo strLine
                                  objRSet.MoveFirst
                                  Do Until objRSet.EOF
                                      For i = 0 To objRSet.Fields.Count - 1
                                          strTemp = vbNullString
                                          If IsArray(objRSet.Fields(i)) Then
                                              arrTemp = objRSet.Fields(i)
                                              For j = 0 To UBound(arrTemp)
                                                  strTemp = strTemp & arrTemp(j) & ";"
                                                  If Err.Number <> 0 Then Err.Clear
                                              Next
                                              Erase arrTemp
                                          Else
                                              strTemp = objRSet.Fields(i).Value
                                              If Err.Number <> 0 Then Err.Clear
                                          End If
                                          strLine = objRSet.Fields(i).Name & " = " & strTemp
                                          objFile.WriteLine strLine
                                          If blnIsConsole Then WScript.Echo strLine
                                      Next
                                      objFile.WriteLine "---"
                                      If blnIsConsole Then WScript.Echo "---"
                                      objRSet.MoveNext
                                  Loop
                                  objFile.Close
                                  Set objFile = Nothing
                                  If blnIsConsole Then
                                      WScript.Echo "Путь к файлу отчёта: " & UCase(strLog)
                                  Else
                                      Set objWShell = CreateObject("WScript.Shell")
                                      objWShell.Run "notepad.exe " & strLog, 1
                                      Set objWShell = Nothing
                                  End If
                              Else
                                  WScript.Echo "Ошибка создания файла отчёта: " & Err.Number & vbNewLine & Err.Description
                                  Err.Clear
                              End If
                          Else
                              WScript.Echo "Ничего не обнаружено."
                          End If
                      Else
                          WScript.Echo "Ошибка выполения запроса: " & Err.Number & vbNewLine & Err.Description
                          Err.Clear
                      End If
                      Set objRSet = Nothing
                      On Error GoTo 0
                      Set objCommand = Nothing
                      objConnection.Close
                      Set objConnection = Nothing
                      Set objFS = Nothing
                      WScript.Quit 0


                    Сообщения были разделены в тему "Помогите написать скрипт"
                      Функция для VB-сценария, позволяющая изменять список управления доступом NTFS (DACL) дескриптора безопасности каталога, сохраняя при этом настройки, унаследованные от "родителя".
                      Варианты изменения DACL (все варианты возможны только для не унаследованных записей):
                      - изменение маски доступа существующей записи с учётом области её действия;
                      - добавление отсутствующей записи с заданными типом, областью действия и маской;
                      - удаление существующей записи с учётом её типа и области действия.
                      Функция позволяет изменять DACL и того каталога, у которого включено наследование от "родителя", и того - у которого отключено.

                      Описание параметров.

                      strDom - входной, обязательный, подтип String.
                      Смысловая нагрузка - левая часть отличительного имени (distinguished name) "учётки" пользователя или группы, представленного в формате ADS_NAME_TYPE_NT4.
                      Допустимые значения:
                      - NetBIOS-имя домена, например, "fabric" (используется для обработки записей DACL, соответствующих "учётке" пользователя или группы из Active Directory);
                      - NetBIOS-имя компьютера, например, "ws" (используется для обработки записей DACL, соответствующих "учётке" пользователя или группы локального компьютера, кроме "учёток" локальной системы и группы "Все");
                      - строка нулевой длины (используется для обработки записей DACL, соответствующих "учётке" локальной системы или группы "Все" локального компьютера).

                      strWS - входной, обязательный, подтип String.
                      Смысловая нагрузка - имя сервера WMI-пространства CIMV2.
                      Допустимые значения:
                      - NetBIOS-имя компьютера, например, "ws" (используется для подключения к WMI-пространству произвольномго компьютера);
                      - символ "." (может использоваться как альтернатива NetBIOS-имени для подключения к WMI-пространству локального компьютера).

                      strSAN - входной, обязательный, подтип String.
                      Смысловая нагрузка - правая часть отличительного имени (distinguished name) "учётки" пользователя или группы, представленного в формате ADS_NAME_TYPE_NT4.
                      Допустимое значения - NetBIOS-имя "учётки" пользователя или группы локального компьютера или Active Directory, например, "user01".

                      strDir - входной, обязательный, подтип String.
                      Смысловая нагрузка - абсолютный локальный путь к каталогу, в DACL дескриптора безопасности которго вносится изменение.
                      Допустимые значения:
                      - путь к любому каталогу тома, кроме "корневого", без завершающего символа "\", например, d:\temp\test;
                      - путь к "корневому" каталогу тома, например, d:\.

                      intType - входной, обязательный, подтип Integer.
                      Смысловая нагрузка - числовой индикатор типа записи DACL, назначенной для обработки.
                      Допустимые значения:
                      -1 - любой тип;
                      0 - тип "РАЗРЕШЕНИЕ";
                      1 - тип "ЗАПРЕТ".

                      intScope - входной, обязательный, подтип Integer.
                      Смысловая нагрузка - числовой индикатор области действия записи DACL, назначенной для обработки.
                      Допустимые значения:
                      -1 - любая область действия;
                      0 - область "Только для этой папки";
                      1 - область "Для этой папки и её файлов";
                      2 - область "Для этой папки и её подпапок";
                      3 - область "Для этой папки, её подпапок и файлов";
                      9 - область "Только для файлов";
                      10 - область "Только для подпапок";
                      11 - область "Только для подпапок и файлов".

                      lngMask - входной, обязательный, подтип Long.
                      Смысловая нагрузка - числовой индикатор маски доступа записи DACL, назначенной для обработки.
                      Допустимые значения:
                      0 - запись назначена для удаления;
                      - любое числовое значение, допустимое для свойства AccessMask WMI-класса Win32_ACE.

                      Возвращаемое значение.

                      Функция возвращает строку с диагностическим сообщением о результатах работы.
                      ExpandedWrap disabled
                        Function Modify_DACL(strDom, strWS, strSAN, strDir, intType, intScope, lngMask)
                        Dim objWMI, objSecSettings, objSD, blnHasInherited, blnHasACE, i
                        Dim xRes, arrACE, objCollection, objItem, strSID
                        Dim objSID, objTrustee, objACE
                        Const SE_DACL_PROTECTED = 4096 'Флаг-признак наследования управляемым каталогом безопасности NTFS от "родителя"
                        Const INHERITED_ACE = 16 'Флаг-признак того, что текущая запись DACL унаследована от "родителя"
                         
                        On Error Resume Next
                        xRes = 0
                        Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strWS & "\root\cimv2")
                        If Err.Number = 0 Then
                            Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & strDir & "'")
                            If Err.Number = 0 Then
                                If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then
                                        If Not IsNull(objSD.DACL) Then
                                            '--- Поиск заданной "учётки" на локальном компьютере или в Active Directory
                                            If Len(strDom) > 0 Then
                                                Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Domain='" & strDom & "' AND Name='" & strSAN & "'")
                                            Else
                                                Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Name='" & strSAN & "'")
                                            End If
                                            '------
                                        If objCollection.Count > 0 Then
                                            If Not CBool(objSD.ControlFlags And SE_DACL_PROTECTED) Then blnHasInherited = True
                                            If blnHasInherited Then
                                                arrACE = Array()
                                                '--- Выборка из исходного DACL записей, не унаследованных от "родителя"
                                                i = -1
                                                For Each objItem In objSD.DACL
                                                    If Not CBool(objItem.AceFlags And INHERITED_ACE) Then
                                                        i = i + 1
                                                        ReDim Preserve arrACE(i)
                                                        Set arrACE(i) = objItem
                                                    End If
                                                Next
                                                Set objItem = Nothing
                                                '------
                                                '--- Отключение наследования настроек безопасности от "родителя"
                                                objSD.ControlFlags = objSD.ControlFlags + SE_DACL_PROTECTED
                                                xRes = objSecSettings.SetSecurityDescriptor(objSD)
                                                '------
                                            Else
                                                arrACE = objSD.DACL
                                            End If
                                            If xRes = 0 Then
                                                '--- Определение SID "учётки", назначенной для обработки
                                                For Each objItem In objCollection
                                                    strSID = UCase(objItem.SID)
                                                Next
                                                Set objItem = Nothing
                                                '------
                                                If lngMask > 0 Then
                                                    '--- Подготовка к добавлению в DACL новой записи
                                                    Set objSID = objWMI.Get("Win32_SID.SID='" & strSID & "'")
                                                    Set objTrustee = objWMI.Get("Win32_Trustee").Spawninstance_()
                                                    objTrustee.Domain = strDom
                                                    objTrustee.Name = strSAN
                                                    objTrustee.SID = objSID.BinaryRepresentation
                                                    objTrustee.SidLength = objSID.SidLength
                                                    objTrustee.SIDString = strSID
                                                    Set objSID = Nothing
                                                    Set objACE = objWMI.Get("Win32_Ace").Spawninstance_()
                                                    objACE.AceType = intType
                                                    objACE.AceFlags = intScope
                                                    objACE.AccessMask = lngMask
                                                    objACE.Trustee = objTrustee
                                                    Set objTrustee = Nothing
                                                    i = UBound(arrACE) + 1
                                                    ReDim Preserve arrACE(i)
                                                    Set arrACE(i) = objACE
                                                    objSD.DACL = arrACE
                                                    '------
                                                Else
                                                    '--- Подготовка к удалению из DACL указанной записи
                                                    For Each objACE In arrACE
                                                        blnHasACE = False
                                                        '--- Поиск указанной записи по SID, области действия и типу
                                                        If UCase(objACE.Trustee.SIDString) = strSID Then
                                                            If intScope >= 0 Then
                                                                If objACE.AceFlags = intScope Then
                                                                    If intType < 0 Or objACE.AceType = intType Then
                                                                        blnHasACE = True 'запись заданного типа с искомыми SID и областью действия найдена
                                                                    End If
                                                                End If
                                                            Else
                                                                blnHasACE = True 'запись с искомым SID найдена (область действия - любая)
                                                            End If
                                                            If blnHasACE Then
                                                                objACE.AccessMask = 0
                                                            End If
                                                        End If
                                                        '------
                                                    Next
                                                    '------
                                                End If
                                                objSD.DACL = arrACE 'Собственно изменение DACL
                                                Set objACE = Nothing
                                                Erase arrACE
                                                If blnHasInherited Then
                                                    '--- Включение наследования настроек безопасности от "родителя",
                                                    'если первоначально оно было включено
                                                    objSD.ControlFlags = objSD.ControlFlags - SE_DACL_PROTECTED
                                                    '------
                                                End If
                                                '--- Итоговое сохраненение изменений, внесённых в дескриптор безопасности
                                                xRes = objSecSettings.SetSecurityDescriptor(objSD)
                                                Select Case xRes
                                                    Case 0: xRes = "Успешное завершение."
                                                    Case 2: xRes = "Не удалось сохранить изменения DACL." & vbNewLine & "Доступ запрещён."
                                                    Case 5, 9: xRes = "Не удалось сохранить изменения DACL." & vbNewLine & "Для выполнения операции недостаточно полномочий."
                                                    Case 21: xRes = "Не удалось сохранить изменения DACL." & vbNewLine & "Заданы недопустимые значения параметров."
                                                    Case Else: xRes = "Не удалось сохранить изменения DACL." & vbNewLine & "Неизвестная ошибка."
                                                End Select
                                                '------
                                            Else
                                                xRes = "Не удалось отключить наследование безопасности для папки " & UCase(strDir)
                                            End If
                                        Else
                                            xRes = "Не найдена учётная запись объекта " & UCase(strDom & "\" & strSAN)
                                        End If
                                        Set objCollection = Nothing
                                    Else
                                        xRes = "Список управления доступом (ACL) к заданному объекту пуст."
                                    End If
                                Else
                                    xRes = "Не удалось прочитать дескриптор безопасности объекта."
                                End If
                                Set objSD = Nothing
                                Set objSecSettings = Nothing
                            Else
                                xRes = "Ошибка " & CStr(Err.Number) & vbNewLine & Err.Description
                                Err.Clear
                            End If
                        Else
                            xRes = "Ошибка " & CStr(Err.Number) & vbNewLine & Err.Description
                            Err.Clear
                        End If
                        Set objWMI = Nothing
                        On Error GoTo 0
                        Modify_DACL = xRes
                        End Function
                      Сообщение отредактировано: Dmitrii -
                        Скрипт для разблокировки аккаунта запускается от админа который может в оснастке разблокировать аккаунт
                        но сам скрипт выдает acces denied на SetInfo.. почему ?
                        и что необходимо чтобы разблокировать скриптом?

                        Set UserObj = GetObject("WinNT://"& DomainName &"/"& UserName &"")
                        If UserObj.IsAccountLocked = -1 then UserObj.IsAccountLocked = 0
                        UserObj.SetInfo
                          Цитата AGhost @
                          ... что необходимо чтобы разблокировать скриптом?
                          В самом общем случае нужно то же, что и для выполнения любого другого сценария на контроллере - достаточные полномочия.
                          Сюда нужно отнести: уровень привилегий "учётки", от имени которой выполняется сценарий, отсутствие ограничений со стороны групповой политики, отсутствие блокировок со стороны локального ПО, обеспечивающего безопасность контроллера (например, UAC, брандмауэра).

                          Цитата AGhost @
                          ... скрипт выдает acces denied на SetInfo.. почему?..
                          Сценарий запускается с удалённой станции или непосредственно на контроллере домена?
                          Другие сценарии, вносящие изменения в AD через провайдер WinNT, работают нормально (в тех же условиях, что и обсуждаемый сценарий, разумеется)?
                            Запускается на удаленной машине из под админского аккаунта, из под которого который можно ручками в оснастке делать unlock логинов...

                            p.s. можно ли как то обойтись без setinfo ??
                              Цитата AGhost @
                              можно ли как то обойтись без setinfo ?
                              Нет.

                              AGhost, без ответа остался вопрос: "Другие сценарии, вносящие изменения в AD через провайдер WinNT, работают нормально (в тех же условиях, что и обсуждаемый сценарий, разумеется)"?
                              Сообщение отредактировано: Dmitrii -
                                Цитата Dmitrii @
                                Цитата AGhost @
                                можно ли как то обойтись без setinfo ?
                                Нет.

                                AGhost, без ответа остался вопрос: "Другие сценарии, вносящие изменения в AD через провайдер WinNT, работают нормально (в тех же условиях, что и обсуждаемый сценарий, разумеется)"?

                                Всё решил через LDAP провайдера....
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (22) « Первая ... 19 20 [21] 22 


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1103 ]   [ 16 queries used ]   [ Generated: 19.03.24, 02:40 GMT ]