Aprende Informatica Conmigo

  • Inicio
  • Contenido Anterior
    • VIDEOTUTORIALES
    • Windows Server 2008
    • POWERSHELL

6 junio, 2009 Por oscar 4 comentarios

Script Powershell – Apagar equipos remotamente – Ver. 3.0

Esto parece que va funcionando, ¿no?

A mi por lo menos si que me es util este script y espero que a vosotros tambien.

Bueno, como os comente en el articulo de la version 2.0 de este script, ahora vamos  a ver como podemos utilizar un fichero de texto en el que previamente hemos introducido los nombres de los equpios que queremos apagar para que los vaya comprobando uno a uno y apagando si es el caso.

En primer lugar creamos un fichero de texto que yo le voy a llamar «equiposapagar.txt» y en el introducimos los equipos que queramos apagar. Como ejemplo podemos poner:

fabrica1

fabrica2

compras3

Podemos poner todos los equipos que queramos. Ojo con incluir servidores o equipos que no deberian apagarse, eh!

Lo primero a tener en cuenta es que en este script no necesitamos ningun dato de entrada, es decir, que al ejecutar el script unicamente escribiremos el nombre del fichero: apagarequipos.ps1

Una vez que tenemos claro esto, nos ponemos manos a la obra con la novedad de esta version: el famoso fichero de texto del cual deberemos cargar su contenido. La linea en custion es la siguiente:

$equiposapagar = get-content -path «c:\power\scripts\equiposapagar.txt»

Interpretamos que, mediante el cmdlet «get-content«, guardamos la informacion del fichero «c:\power\scripts\equiposapagar.txt» en la variable $equiposapagar.

Esto nos queda claro, ¿no?

Otra de las novedades de este script es que utilizaremos la orden «foreach-object» para recorrer todos y cada uno de los equipos que ahora tenemos guardados en la variable $equiposapagar.

A continuacion tenemos el codigo:


#Script: apagarequipos.ps1
#Version: 3.0
#
#Autor: Oscar Abad Folgueira
#Web:   https://www.aprendeinformaticaconmigo.com
#Fecha: 25 de Abril de 2009
#
#Tipo: Powershell
#Funcion: Recorre un fichero de texto con nombres de equipo y los va apando uno a uno.
#
#Parametros: No necesita parametros de entrada.
#Uso: apagarequipos.ps1
#
#
#obtener la lista de equipos que se pueden apagar y guardarla en la variable»$equiposapagar»
$equiposapagar = get-content -path «c:\power\scripts\equiposapagar.txt»
#
#Bucle «foreah-object» que recorre todos los equipos del fichero para ver si estan apagados y si es asi
#los apaga
#
$equiposapagar | foreach-object {
$equipo = $_
$estado = get-wmiobject -query «select statuscode from win32_pingstatus where address = ‘$equipo'»
if ($estado.statuscode -eq 0) {
(get-wmiobject -class win32_operatingsystem -computername $equipo).win32shutdown(12)
}
}


Creo que no es nada dificil entender el fucnionamiento.

Probad tambien este script si podeis. Yo personalmente lo he puesto en varias fabricas para revisar los equipos que se quedan encendidos por las noches y si estan encendidos, apagarlos.

Yo he añadido unas lineas para crear un log de los equipos que estan encendidos por que siempre esta bien saber cuantos equipos apagamos y, de este modo, si el trabajo merece la pena por el ahorro de consumo.

Venga, espero que me comenteis que tal os ha funcionado.

A pasarlo bien!!

—–
Oscar Abad
http://www.xulak.com – Consultoría informática

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, programacion, scripts powershell, sistemas, tutoriales Etiquetado como: apagar equipos remotamente, aprendeinformaticaconmigo, powershell, scripts

Acerca de oscar

Programador WordPress freelance

Comentarios

  1. rcastro dice

    10 junio, 2009 a las 18:19

    buenas
    Ante todo muchas gracias por compartir tus conocimientos. desde vista, y dentro del PS 2.0 intento ejecutar el script pero me salta el siguiente error:

    [PS] C:\power\scripts>.\apagarequipos.ps1
    Get-WmiObject : Consulta no válida
    En C:\power\scripts\apagarequipos.ps1:20 carácter:24
    + $estado = get-wmiobject <<<< -query «select statuscode from win32_pingstatus where address = ‘$equipo'»

    sabes donde puede estar el error?. Las instrucciones no deben de tener espacios intermedios vacios?, me refiero a Ej. ..adress=’$equipo'»
    Un saludo y felicidades por Blog

    Accede para responder
    • oscar dice

      10 junio, 2009 a las 19:07

      Saludos y bienvenido al blog rcastro.
      Con estas historias he tenido yo un monton de mensajes como el que te da a ti.
      Antes de nada, supongo que tendras los ficheros en las rutas que indican en el script. c:\power\scripts\ y que tendras creado el fichero «equiposapagar.txt» en el mismo directorio. Bueno esto supongo que si.
      Decirte que yo lo estoy haciendo con la version de Powershell 1.0 por que hace tiempo probe con la 2.0 y «get-wmiobject» me dio algun que otro disgusto. Pero bueno, para salir de dudas yo suelo abrir una consola de powershell y voy haciendo las cosas paso a paso. Seguro que me entiendes.
      Me lo curro de tal forma que ejecuto una a una las lineas del script y asi se cual es la que me da problemas.
      Puede ser que te siga dando ese error, entonces yo verificaria que el equipo remoto esta preparado para aceptar ordenes remotas.
      Pero bueno, primero prueba a hacerlo paso a paso y si no te funciona, me dices y te comento algo que puedes hacer.
      Venga, muchas gracias por visitar el blog y nos vemos….
      A pasarl bien!!

      Accede para responder
  2. David Velasquez dice

    29 enero, 2011 a las 0:33

    Saludos y muchas gracias, Oscar primero darte mis felicitaciones, segundo pedirte una colaboración con esto de PS 1.0.
    Te comento que ya tengo instalado en una unidad virtual con windows server 2003 el PS 1.0, cuento con una red de 5 equipos virtuales q se encuentran en un dominio el cual lo administra el server (se puede decir que este es mi entorno de pruebas), en la empresa a la cual trabajo me pidieron que apagara los equipos a cierta hora ya q algunos funcionarios se les olvida apagar los equipos (diria q a todos), investigando me tope con la pagina y me parece interesante esto de Script con powershell pero lastimosamente es mi primer contacto con esta forma de programación. hasta donde entiendo el script verifica por medio de ping si el estado del equipo para dar la orden de apagado (si da respuesta = orden apagado, si no da respuesta = se considera q esta apagado en esta parte tengo unas dudas), ahora mirando mas abajo comentas q agregaste unas lineas para crear un log de registro no se si es muchos q pudieces compartir estas en la pagina, de nuevo mil gracias.

    Accede para responder
  3. isiana dice

    11 octubre, 2011 a las 23:53

    Hola Oscar:
    Ante todo gracias por compartir tus conocimientos. Es primera vez que veo power shell y me parece muy interesante. He probado este script pero al momento de ejecutarlo (haciendo ./apagarequipos) me salen unos comandos en la consola que no entiendo, me aparecen asi:
    ___GENIUS : 2
    ___CLASS : ___PARAMETERS
    ___SUPERCLASS :
    ___DYNASTY : ___PARAMETERS
    ___RELPATH :
    ___PROPERTYCOUNT: 1
    ___DERIVATION : []
    ___SERVER :
    ___NAMESPACE :
    ___PATH :
    ___Returnvalue : 0
    He revisado el codigo y todo esta bien escrito, las rutas tambien (c:\power○\scripts\****) tengo la version 1 no se que cual pueda ser el error, las PCs tambien tienen los permisos para ser apagados remotamente, estoy ejecutando el script desde un windows2003 con un user Administrador. Por favor tu ayuda. Gracias.
    Isiana

    Accede para responder

Deja una respuesta Cancelar la respuesta

Lo siento, debes estar conectado para publicar un comentario.

Hazte con el tema Divi

Divi WordPress Theme
Libro windows server 2008

Libro certificación Windows Server 2016

Libro certificación Windows Server 2016

Libro Windows Server 2016

Libro Windows Sever 2016
Web Hosting

Últimos artículos

  • PHP función var_dump(): Mostrar el contenido de una variable
  • PHP función unset(): Eliminar variables
  • MySQL LIMIT: Limitar la canidad de filas en una consulta
  • PHP función isset(): Evaluar si una variable está definida
  • PHP función empty(): Comprobar si una variable está vacía
  • MySQL SELECT DISTINCT para encontrar registros con diferente valor en el mismo campo
  • Los mejores libros en español para aprender WordPress

Mis Webs

  • Aprende Informática Conmigo
  • Dinapyme
  • MUSIKP
  • Oscar Abad Folgueira

Proyectos

  • Basabe Baserria
  • Batukada Battuere
  • Bicicletas Sin Pedales
  • Bordalan
  • C.R. Pantano del Rumblar
  • Dinapyme
  • DiverBiblio
  • Egia Ingenieros
  • Hermanos Vivas construcciones
  • Ibartxi – Suministros de Gas y Soldadura
  • LANBASE
  • LS Fotografía
  • Luke and Phil
  • Masajes Mas Sana
  • MUSIKP
  • Oh! Yeah Dev
  • Oscar Abad Folgueira
  • Participación ciudadana Basauri
  • Restaurante Bideko
  • Taldesport
  • Vicente Choya
  • WooCommerce Knowledge2K
  • Inicio
  • Contenido Anterior

Copyright © 2023 · Oscar Abad Folgueira Y DINAPYME· Acceder