Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Проверка "активности" пользователя в VBS\BAT (http://forum.oszone.net/showthread.php?t=321451)

id334492052@vk 05-12-2016 12:44 2693111

Проверка "активности" пользователя в VBS\BAT
 
Здравствуйте форумчане ! Такая дилемма возникла : необходимо получить при помощи команды NET получить текущее состояние учетной записи встроенного администратора (active:yes\no) и передать результат в VBS скрипт. Скрипт в зависимости от результата - отображает определенный текст в окне. Со скриптом проблем не возникло, а вот реализовать передачу результата никак не выходит. Это реализуемо ?

greg zakharov 05-12-2016 13:05 2693115

Цитата:

Цитата id334492052@vk
Это реализуемо ?

Кратко - да. Более развернуто - все зависит от того, что из себя представляет VBS, а также задействуются ли в нем аргументы командной строки; если, например, VBS "склеивается" с bat по принципу гибрида, можно либо создать переменную, содержащие данные об активности профиля, а по ходу исполнения обращаться к этой переменной, либо через те же аргументы, либо через ADS (альтернативные потоки), либо через реестр, но последние два варианта из области утонченного разврата; аналогично можно поступить и во втором случае.

id334492052@vk 05-12-2016 13:18 2693119

Спасибо большое за ответ ! Собственно, задача была изначально следующая : получить состояние учетной записи встроенного админа (win7) и передать в vbs, который в зависимости от результата - отобразит определенный текст в окне вопроса и затем , выполнит определенную команду с перезагрузкой. Т.е. если учетка админа отключена - отобразит окно с предложение включить и выполнит команду "net user администратор /active:yes" , ну или "no" в противном случае. Не подскажите, а как можно реализовать это всё целиком в bat , в частности передачу значения в переменную ?

Iska 05-12-2016 14:08 2693132

id334492052@vk, зачем что-то изобретать, когда можно просто взять и просто добавить код в тот же VBS? Вот Вам примерная болванка:
Скрытый текст
Код:

Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObjectEx


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True

For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery( _
                "SELECT * FROM Win32_UserAccount WHERE LocalAccount = True AND SID LIKE 'S-1-5-21-%-500'" _
        )
       
        If objSWbemObjectEx.Disabled Then
                If MsgBox("Enable [" & objSWbemObjectEx.Name & "] account?", vbQuestion + vbYesNo + vbDefaultButton2, "Enable account") = vbYes Then
                        With GetObject("WinNT://" & strComputer & "/" & objSWbemObjectEx.Name & ",user")
                                .AccountDisabled = False
                                .SetInfo
                        End With
                       
                        Call Reboot
                End If
        Else
                If MsgBox("Disable [" & objSWbemObjectEx.Name & "] account?", vbQuestion + vbYesNo + vbDefaultButton2, "Disable account") = vbYes Then
                        With GetObject("WinNT://./" & objSWbemObjectEx.Name & ",user")
                                .AccountDisabled = True
                                .SetInfo
                        End With
                       
                        Call Reboot
                End If
        End If
Next

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Reboot()
        Dim objSWbemObjectEx
       
        For Each objSWbemObjectEx In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
                objSWbemObjectEx.Reboot()
        Next
End Sub
'=============================================================================



Время: 15:07.

Время: 15:07.
© OSzone.net 2001-