В данном разделе находится общая информация.
В данном разделе находятся примеры различных Linux shell скриптов.
В данном разделе находятся примеры различных скриптов на WSH.
В данном разделе находятся материалы по разным темам.

Правильный CSS!

Для корректного отображения страницы, рекомендуется использовать браузер поддерживающий JavaScript.

Для навигации пользуйтесь боковым меню и кнопками "Описание" и "Подробно".

Скрипт WSH (VBS) ChangeAdmPass.vbs для смены пароля локального пользователя на ПК в домене.

Основные возможности:

  • Смена пароля для всех ПК, принадлежащих конкретному подразделению в Active Directory;
  • Смена пароля для конкретн(ого|ых) ПК, принадлежащ(его|их) конкретному подразделению в Active Directory;
  • Возможность указания исключений;
  • Вывод отчета в окно IE;
  • Возможность тестового запуска.

Пример запуска скрипта ChangeAdmPass.vbs и результаты

  • Выбор подразделения из списка (если выбор не из списка - сообшение об ошибке):
  • Выбор режима тестовый или нормальный (если выбор не из списка - сообшение об ошибке):
  • Ввод нового пароля (если длина меньше требуемой - сообшение об ошибке):
  • Вывод результата работы скрипта в окно IE:

Пример ChangeAdmPass.vbs файла:

(Скачать файл можно будет здесь. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)

Основные параметры:

  • OneComps - конкретный комп из objOU. Если не указан, то все компы из objOU. Писать заглавными буквами в ковычках через запятую!!!;
  • NoComps - исключения, конкретный комп из objOU. Если не указан, то без исключений. Писать заглавными буквами в ковычках через запятую!!!;
  • ComputerOUs - доступные объекты;
  • DC - DC домена;
  • UserNameRu, UserNameEn - логин администратора (RU/EN);
  • defaultpw - новый пароль (по умолчанию);
  • MinPwLen - минимальная длина пароля.
ЗЫ: В тексте предусмотрена возможность вывода сообщений через WScript.Echo вместо окна IE (требуется снять/установить соответствующие комментарии)!

Текст ChangeAdmPass.vbs:

' !!!!!!!!!!!!!!!!!!
' Это можно изменить
' !!!!!!!!!!!!!!!!!!

'Выбор OneComp - конкретный комп из objOU. Если не указан, то все компы из objOU. Писать заглавными буквами в ковычках через запятую!!!
Dim OneComps
OneComps = Array("")

'Исключения - конкретный комп из objOU. Если не указан, то без исключений. Писать заглавными буквами в ковычках через запятую!!!
Dim NoComp
NoComps = Array("SHKAF", "TUMBA")

'Доступные объекты objOU
Dim ComputerOUs
ComputerOUs = Array("OU=Office1", "OU=Garazh, OU=OfficeS", "OU=Poligon, OU=OfficeS", "OU=Office2", "OU=OfficeServers")

DC = "DC=example, DC=com"

'Пользователь
UserNameRu = "Администратор"
UserNameEn = "Administrator"

'Пароль по умолчанию
defaultpw = "Pa55W0Rd"
'Длина пароля не менее
MinPwLen = 8

'Параметры окна ie
ieWidth = 800
ieHeight = 700
'Заголовок
innerhtml = "<h1>Установка нового пароля</h1>"




' !!!!!!!!!!!!!!!
' Далее не менять
' !!!!!!!!!!!!!!!
i = 0
ComputerOUString = "ComputerOU в " & DC & ":"
For Each ComputerOU in ComputerOUs
    i = i +1
    ComputerOUString = ComputerOUString & VBNewLine & i & ": " & ComputerOU
Next

Set objArgs = WScript.Arguments
On Error Resume Next

'Выбор объектов
ComputerOUi = objArgs(0)
If Err.Number <> 0 Then
    ComputerOUi = InputBox(ComputerOUString, "Быбор ComputerOU", 1)
    Err.Clear
End If

If RegExpTest("^[1-" & i & "]$", ComputerOUi) Then
    OU = ComputerOUs(ComputerOUi-1) & ", " & DC
Else
    MsgBox "Ошибка: значение ComputerOU вне диапазона!", WScript.Quit()
End If

Set objOU = GetObject("LDAP://" & OU)
objOU.Filter = Array("Computer")

innerhtml = innerhtml & "<h2>Условия:</h2>Объект: " & OU & "<br/>"

'Выбор Test: 0 - не тест, 1 - тест
IfTest = objArgs(1)
If Err.Number <> 0 Then
    IfTest = InputBox("IfTest:" & VBNewLine & "Нормальный запуск = 0" & VBNewLine & "Тестовый запуск = 1", "IfTest", 1)
    Err.Clear
End If

Select Case IfTest
    Case "0"   Test = 0
    Case "1"
        Test = 1
        innerhtml = innerhtml & "<h3>Тестовый режим, измеения не вносятся!</h3>"
    Case Else  MsgBox "Не верный ввод!", WScript.Quit()
End Select

'Новый пароль:
NewPasswd = objArgs(2)
If Err.Number <> 0 Then
    NewPasswd = InputBox("Passwd:" & VBNewLine & "новый пароль не менее " & MinPwLen & " знаков", "Passwd", defaultpw)
    Err.Clear
End If

LenNewPasswd = Len(NewPasswd)

If LenNewPasswd < MinPwLen Then
    MsgBox "Слишком короткий пароль:" & VBNewLine & "Должно быть не менее" & MinPwLen & "знаков!", WScript.Quit()
End If

Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = ieWidth
objExplorer.Height = ieHeight
objExplorer.Left = 0
objExplorer.Top = 0
Do While (objExplorer.Busy)
    Wscript.Sleep 200
Loop
objExplorer.Visible = 1

strOneComps = "Только из списка: "
For Each OneComp in OneComps
    If OneComp <> "" Then
        strOneComps = strOneComps & OneComp & "; "
    Else
        strOneComps = strOneComps & " Все"
    End If
Next
innerhtml = innerhtml & strOneComps & "<br/>"

strNoComps = "Исключая: "
For Each NoComp in NoComps
    If NoComp <> "" Then
        strNoComps = strNoComps & NoComp & "; "
    Else
        strNoComps = strNoComps & " Без исключений"
    End If
Next
innerhtml = innerhtml & strNoComps & "<br/><br/>"

objExplorer.Document.Body.InnerHTML = innerhtml

'Старт
On Error Resume Next
For Each objItem in objOU
    strComputer = objItem.CN
    OneCompFound = 0
    For Each OneComp in OneComps
        If OneComp <> "" and strComputer = OneComp Then
            OneCompFound = 1
        ElseIf OneComp = "" Then
            OneCompFound = 1
        End If
    Next
    If OneCompFound <> 1 Then
        'WScript.Echo """" & strComputer & """,""Не соответствует фильтру"",""Пропущен"""
        'innerhtml = innerhtml & """" & strComputer & """,""Не соответствует фильтру OneComps"",""Пропущен""<br/>"
        'objExplorer.Document.Body.InnerHTML = innerhtml
    Else
        NoCompFound = 0
        For Each NoComp in NoComps
            If NoComp <> "" and strComputer = NoComp Then
                NoCompFound = 1
            End If
        Next
        If NoCompFound <> 1 Then
            nameping = TestPing(strComputer)
            If nameping = 0 Then
                'WScript.Echo """" & strComputer & """,""Не пингуется или не доступен"",""Пропущен"""
                innerhtml = innerhtml & """" & strComputer & """,""Не пингуется или не доступен"",""Пропущен""<br/>"
                objExplorer.Document.Body.InnerHTML = innerhtml
            Else
                Err.Clear
                Set objUser = GetObject("WinNT://" & strComputer & "/" & UserNameRu)
                If Err.Number <> 0 Then
                    'WScript.Echo """" & strComputer & """,""Не найден " & UserNameRu & """,""Пробуем: " & UserNameEn & """"
                    innerhtml = innerhtml & """" & strComputer & """,""Не найден " & UserNameRu & """,""Пробуем: " & UserNameEn & """<br/>"
                    objExplorer.Document.Body.InnerHTML = innerhtml
                    Err.Clear
                    Set objUser = GetObject("WinNT://" & strComputer & "/" & UserNameEn)
                    If Err.Number <> 0 Then
                        'WScript.Echo """" & strComputer & """,""Не найден " & UserNameEn & """,""Пропущен"""
                        innerhtml = innerhtml & """" & strComputer & """,""Не найден " & UserNameEn & """,""Пропущен""<br/>"
                        objExplorer.Document.Body.InnerHTML = innerhtml
                    Else
                        'WScript.Echo """" & strComputer & """,""Найден " & UserNameEn & """,""Установлен новый пароль"""
                        innerhtml = innerhtml & """" & strComputer & """,""Найден " & UserNameEn & """,""Установлен новый пароль""<br/>"
                        objExplorer.Document.Body.InnerHTML = innerhtml
                        If Test = 0 Then
                            objUser.SetPassword(NewPasswd)
                        End If
                    End If
                Else
                    'WScript.Echo """" & strComputer & """,""Найден " & UserNameRu & """,""Устанавлен новый пароль"""
                    innerhtml = innerhtml & """" & strComputer & """,""Найден " & UserNameRu & """,""Устанавлен новый пароль""<br/>"
                    objExplorer.Document.Body.InnerHTML = innerhtml
                    If Test = 0 Then
                        objUser.SetPassword(NewPasswd)
                    End If
                End If
            End If
        Else
            'WScript.Echo """" & strComputer & """,""Не соответствует фильтру"",""Пропущен"""
            'innerhtml = innerhtml & """" & strComputer & """,""Cоответствует фильтру NoComps"",""Пропущен""<br/>"
            'objExplorer.Document.Body.InnerHTML = innerhtml
        End If
    End If
Next
objExplorer.Document.Body.InnerHTML = innerhtml & "Готово."
'Wscript.Sleep 600000
'objExplorer.Quit
WScript.Quit()

Function TestPing(address)
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colPings = objWMIService.ExecQuery _
        ("Select * From Win32_PingStatus where Address = '" & address & "'")
    For Each objStatus in colPings
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
            TestPing = 0
        Else
            TestPing = 1
        End If
    Next
End Function

Function RegExpTest(patrn, strng)
  Dim regEx, retVal            ' Create variable.
  Set regEx = New RegExp         ' Create regular expression.
  regEx.Pattern = patrn         ' Set pattern.
  regEx.IgnoreCase = False      ' Set case sensitivity.
  RegVal = regEx.Test(strng)      ' Execute the search test.
  RegExpTest = RegVal
End Function

			

Yandex.Metrika

Page modification: Птн Сен 10 16:48:34 MSD 2010
Используется Quanta+ 3.5.10 Under the GPL v2 license.