Создание сценариев MMC с помощью vbscript

Я хотел бы добавить оснастку через vbscript, и у меня возникла проблема с добавлением оснастки в консоль. Он будет работать в среде Windows 7. Если бы кто-то мог посмотреть и направить меня в правильном направлении, я был бы очень благодарен. Спасибо.

<code>

'Elevated privileges start
'Start of UAC workaround code
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If WScript.Arguments.length =0 Then
    Set objShell = CreateObject("Shell.Application")
    objShell.ShellExecute "wscript.exe", Chr(34) & _
    WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else


consoleName = "C:\Burnett.msc"

Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(consoleName) Then
    Wscript.Echo "console already exists"
Else
    On Error Resume Next
    Set objMMC = CreateObject("MMC20.Application")
    If err.Number <> 0 Then
        Wscript.Echo "an error occurred. unable to create mmc console"
        Wscript.Quit(0)
    End If

    objMMC.Show
    Set objDoc = objMMC.Document
    objDoc.snapins.add("Local Computer\Non-Administrators")
    if err then
    'Trap the error just after the statement where an error/exception can occur and handle it elegantly
        msgbox("Snap-in Not found")  
        err.clear
    end if
    objDoc.ActiveView.StatusBarText = "Pane 1|Pane 2|Pane 3"
    objMMC.UserControl = 1
    objDoc.Name = consoleName
    objDoc.Save()
End If

Set fso = Nothing


End If 

</code>

person roontoon    schedule 16.12.2013    source источник
comment
Что не так с вашим кодом до сих пор? Вы получаете ошибку? Если да, то в какой строке и какое сообщение об ошибке?   -  person Helen    schedule 17.12.2013
comment
objDoc.snapins.add(Local Computer\Non-Administrators) Независимо от того, какую оснастку я использую, я получаю сообщение об ошибке 8000FFFF, если отключаю ловушку ошибок. screencast.com/t/fQW9lOhb2w   -  person roontoon    schedule 17.12.2013
comment
Я мог бы добавить, что я могу загрузить редактор объектов групповой политики, но я хочу дополнительно настроить этот объект, чтобы я мог установить локальный компьютер\не-администраторы. Есть ли способ перечислить все способы настройки объекта групповой политики? Я немного не в себе с такого рода программированием и нуждаюсь в некотором обучении.   -  person roontoon    schedule 17.12.2013


Ответы (1)


«Локальный компьютер\неадминистраторы» — это просто системное описание конкретной конфигурации оснастки. В этом случае фактическое имя оснастки — «Редактор объектов групповой политики». Таким образом, чтобы исключить ошибку в изменении кода

objDoc.snapins.add("Local Computer\Non-Administrators")

to

objDoc.snapins.add("Group Policy Object Editor")

К сожалению, это приведет вас только к тому, что MMC откроет диалоговое окно «Выбрать объект групповой политики». Затем вам придется вручную выбрать нужную конфигурацию в этом диалоговом окне. Насколько я могу судить, нет возможности предоставить Snapins.Add параметры для выбора локальных пользователей без прав администратора.

Приведенный ниже код полностью автоматизирует процесс настройки оснастки. Однако его зависимость от SendKeys делает его чрезвычайно хрупким. Это сработало в моей системе, но есть большая вероятность, что вам придется изменить последовательность нажатий клавиш и/или временные задержки, чтобы заставить его работать в вашей системе. И как только вы заставите его работать, нет никакой гарантии, что он продолжит работать, поскольку местные условия изменчивы и могут сильно повлиять на время.

option explicit

if WScript.Arguments.Named.Exists("elevated") = false then 
  'Launch the script again with UAC permissions
  CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
  WScript.Quit
end if

Dim mmc : set mmc = WScript.CreateObject("MMC20.Application")
mmc.Show
mmc.UserControl = 1   'to keep MMC open

Dim oShell : set oShell = WScript.CreateObject("Wscript.Shell")
oShell.AppActivate "Console1"
WScript.Sleep 200
oShell.SendKeys "%f"
WScript.Sleep 200
oShell.SendKeys "m"
WScript.Sleep 400
oShell.SendKeys "group{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{TAB}{RIGHT}{TAB}Non{ENTER}" 
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{ENTER}"
WScript.Sleep 1000
oShell.SendKeys "{TAB}{TAB}{TAB}{TAB}{ENTER}"
person Rob Boylan    schedule 20.05.2015