Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: palophp en 25 Octubre 2016, 20:31 PM

Título: ConnectServer Apagar equipos remotamente
Publicado por: palophp en 25 Octubre 2016, 20:31 PM
Hola.
Estoy realizando un script para apagar los equipos de un dominio, pero no se me apagan ni metiendo las credenciales del administrador de cada equipo.
Utilizo la sentencia ConnectServer pero no hay tu tia.
Alguien me ayuda?

Este es el codigo, pero no me hace nada:
Código (vb) [Seleccionar]

Dim sUser, sPassword
'set remote credentials
sUser = "adm"
sPassword = "***"

'Establecemos control de errores
On Error Resume Next

'get WMI locator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
'Connect to remote WMI
Set oConnection = oLocator.ConnectServer(StrEquipo, "\root\cimv2", sUser, sPassword)

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & StrEquipo  & oConnection)
   
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
   For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
   Next

Título: Re: ConnectServer Apagar equipos remotamente
Publicado por: Miseryk en 27 Octubre 2016, 19:14 PM
Cita de: palophp en 25 Octubre 2016, 20:31 PM
Hola.
Estoy realizando un script para apagar los equipos de un dominio, pero no se me apagan ni metiendo las credenciales del administrador de cada equipo.
Utilizo la sentencia ConnectServer pero no hay tu tia.
Alguien me ayuda?

Este es el codigo, pero no me hace nada:
Código (vb) [Seleccionar]

Dim sUser, sPassword
'set remote credentials
sUser = "adm"
sPassword = "***"

'Establecemos control de errores
On Error Resume Next

'get WMI locator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
'Connect to remote WMI
Set oConnection = oLocator.ConnectServer(StrEquipo, "\root\cimv2", sUser, sPassword)

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & StrEquipo  & oConnection)
   
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
   For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
   Next



Fijate con el shutdown de windows, le podés pasar -m \\PC con user y pass
Título: Re: ConnectServer Apagar equipos remotamente
Publicado por: palophp en 27 Octubre 2016, 20:39 PM
Dices que ponga eso aquí?
Código (vb) [Seleccionar]
   
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
Next
Título: Re:
Publicado por: DelKoS en 27 Octubre 2016, 21:43 PM
Hola.

Lo que te dice el compi es que shutdown es una intrucción propia del sistema operativo.

Abre una shell (simbolo de sistema) y ejecuta el comando con el parametro de ayuda para que veas lo que mejor te conviene, pero como él te ha dicho con el parametro /m \\equipo te vale, y con ella una cuenta que tenga permisos para realizar la acción, sea local o de dominio.

Juega primero con ella antes de implementarlo en tu script.


S2