CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Ответить
Аватара пользователя
id334492052@vk

CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Сообщение id334492052@vk »

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

Re: CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Сообщение greg zakharov »

Цитата id334492052@vk:



Это реализуемо ?



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

Re: CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Сообщение id334492052@vk »

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

Re: CMD/BAT - Проверка "активности" пользователя в VBS\BAT

Сообщение Iska »

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



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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
'=============================================================================
Ответить

Вернуться в «Скриптовые языки администрирования Windows»