Aprende Informatica Conmigo

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

4 julio, 2010 Por oscar Deja un comentario

Windows Server 2008 – Implementando la infraestructura – Parte 1

Cómo ya comenté en en último artículo sobre Windows Server 2008, vamos a intentar crear una infraestructura para poder realizar pruebas mientras aprendemos el funcionamiento del Directorio Activo en 2008 y sus carácterísticas mas relevantes.

Para ponernos en situción, vamos a crear el entorno de trabajo en el primer dominio, que sería: «aic.local«.

Doy por sentado que habéis seguido los anteriores artículos del blog sobre Windows 2008, pero si no es así, lo podéis hacer en este enlace.

Para poder realizar o seguir los tutoriales a partir de éste, debemos tener implementado un controlador de dominio para el dominio «aic.local«. Podéis realizar las pruebas que querais con los tutoriales de 2008.

Hay que dejar claro lo que vamos a hacer en éste dominio y los objetos que crearemos.

En primer lugar, voy a crear, de momento las Unidades Organizativas para alojar las cuentas de usuario o equipo.

  • equipos
    • administracion
    • compras
    • direccion
    • informatica
    • marketing
    • ventas
  • usuarios
    • administracion
    • compras
    • direccion
    • informatica
    • marketing
    • ventas

He realizado un script para crear estas Unidades Organizativas que, si queréis podéis adaptar a vuestras necesidades:


$objDominio=[ADSI]»LDAP://DC=aic,DC=local»
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=equipos»)
$objOU.Put(«description»,»OU para almacenar ordenadores»)
$objOU.SetInfo()
$objDominio=[ADSI]»LDAP://OU=equipos,DC=aic,DC=local»
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=administracion»)
$objOU.Put(«description»,»Equipos del departamento de administracion»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=ventas»)
$objOU.Put(«description»,»Equipos del departamento de ventas»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=compras»)
$objOU.Put(«description»,»Equipos del departamento de compras»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=informatica»)
$objOU.Put(«description»,»Equipos del departamento de informatica»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=marketing»)
$objOU.Put(«description»,»Equipos del departamento de marketing»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=direccion»)
$objOU.Put(«description»,»Equipos del departamento de direccion»)
$objOU.SetInfo()
$objDominio=[ADSI]»LDAP://DC=aic,DC=local»
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=usuarios»)
$objOU.Put(«description»,»OU para almacenar usuarios»)
$objOU.SetInfo()
$objDominio=[ADSI]»LDAP://OU=usuarios,DC=aic,DC=local»
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=administracion»)
$objOU.Put(«description»,»Usuarios del departamento de administracion»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=ventas»)
$objOU.Put(«description»,»Usuarios del departamento de ventas»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=compras»)
$objOU.Put(«description»,»Usuarios del departamento de compras»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=informatica»)
$objOU.Put(«description»,»Usuarios del departamento de informatica»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=marketing»)
$objOU.Put(«description»,»Usuarios del departamento de marketing»)
$objOU.SetInfo()
$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=direccion»)
$objOU.Put(«description»,»Usuarios del departamento de direccion»)
$objOU.SetInfo()


Después de ejutar el script anterior, nos debería quedar como en la siguiente captura de pantalla:

plainfra-01

Antes de empezar a crear usuarios, vamos a ver los que vamos a crear, los ordeno por departamento y para no complicarnos mucho con detalles sin importancia para este laborario de pruebas, voy a nombrar a los equipos y usuarios dependiendo del departamento en el que trabajen. Con esto quiero decir que las cuentas de usuario serán del tipo: «admin01, admin02…», etc..

Empezamos a definir los usuarios que crearemos en cada departamento de AIC:

Administración: admin01 y admin02

Marketing: mark01

Ventas: ventas01 y ventas02

Compras: compras01 y compras02

Directiva: director01

Informatica: infor01, infor02, infor03, infor04, infor05, infor06, infor07, infor08

Las cuentas de usuario las podemos crear a mano desde «Active Directory users and computers», pero también podemos crearlas mediante algún que otro script.

Yo voy a facilitaros este trabajo creando scripts en Powershell, de esta forma copiais el texto, lo guardais en un fichero de texto, lo llamais por ejemplo: «crearusuariosaic.ps1» y lo ejecutais desde Powershell.

A continuación teneis el código:


$objOU=[ADSI]»LDAP://OU=administracion,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=admin01″)
$objUser.Put(«sAMAccountName»,»admin01″)
$objUser.Put(«userPrincipalName»,»admin01″)
$objUser.SetInfo()
dsmod user «CN=admin01,OU=administracion,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=administracion,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=admin02″)
$objUser.Put(«sAMAccountName»,»admin02″)
$objUser.Put(«userPrincipalName»,»admin02″)
$objUser.SetInfo()
dsmod user «CN=admin02,OU=administracion,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=marketing,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=mark01″)
$objUser.Put(«sAMAccountName»,»mark01″)
$objUser.Put(«userPrincipalName»,»mark01″)
$objUser.SetInfo()
dsmod user «CN=mark01,OU=marketing,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=ventas,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=ventas01″)
$objUser.Put(«sAMAccountName»,»ventas01″)
$objUser.Put(«userPrincipalName»,»ventas01″)
$objUser.SetInfo()
dsmod user «CN=ventas01,OU=ventas,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=ventas,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=ventas02″)
$objUser.Put(«sAMAccountName»,»ventas02″)
$objUser.Put(«userPrincipalName»,»ventas02″)
$objUser.SetInfo()
dsmod user «CN=ventas02,OU=ventas,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=compras,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=compras01″)
$objUser.Put(«sAMAccountName»,»compras01″)
$objUser.Put(«userPrincipalName»,»compras01″)
$objUser.SetInfo()
dsmod user «CN=compras01,OU=compras,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=compras,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=compras02″)
$objUser.Put(«sAMAccountName»,»compras02″)
$objUser.Put(«userPrincipalName»,»compras02″)
$objUser.SetInfo()
dsmod user «CN=compras02,OU=compras,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor01″)
$objUser.Put(«sAMAccountName»,»infor01″)
$objUser.Put(«userPrincipalName»,»infor01″)
$objUser.SetInfo()
dsmod user «CN=infor01,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor02″)
$objUser.Put(«sAMAccountName»,»infor02″)
$objUser.Put(«userPrincipalName»,»infor02″)
$objUser.SetInfo()
dsmod user «CN=infor02,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor03″)
$objUser.Put(«sAMAccountName»,»infor03″)
$objUser.Put(«userPrincipalName»,»infor03″)
$objUser.SetInfo()
dsmod user «CN=infor03,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor04″)
$objUser.Put(«sAMAccountName»,»infor04″)
$objUser.Put(«userPrincipalName»,»infor04″)
$objUser.SetInfo()
dsmod user «CN=infor04,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor05″)
$objUser.Put(«sAMAccountName»,»infor05″)
$objUser.Put(«userPrincipalName»,»infor05″)
$objUser.SetInfo()
dsmod user «CN=infor05,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor06″)
$objUser.Put(«sAMAccountName»,»infor06″)
$objUser.Put(«userPrincipalName»,»infor06″)
$objUser.SetInfo()
dsmod user «CN=infor06,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=informatica,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=infor07″)
$objUser.Put(«sAMAccountName»,»infor07″)
$objUser.Put(«userPrincipalName»,»infor07″)
$objUser.SetInfo()
dsmod user «CN=infor07,OU=informatica,OU=usuarios,DC=aic,DC=local» -disabled no

$objOU=[ADSI]»LDAP://OU=direccion,OU=usuarios,DC=aic,DC=local»
$objUser=$objOU.Create(«user»,»CN=director01″)
$objUser.Put(«sAMAccountName»,»director01″)
$objUser.Put(«userPrincipalName»,»director01″)
$objUser.SetInfo()
dsmod user «CN=director01,OU=direccion,OU=usuarios,DC=aic,DC=local» -disabled no


La salida en Powershell de el script anterior puede ser la siguiente:

plainfra-02

Ahora, ya tenemos lo necesario para empezar a trabajar y practicar con los grupos en Windows 2008.

Por lo que a mi entorno, ahora mismo lo tengo así:

plainfra-03

En cuanto al resto de dominios que tenemos que crear, ya los podeís ir creando y dentro de varios artículos, escribiré otro para configurarlos.

Por ahora es todo porque ya lo tenemos listo para empezar con los grupos y eso es lo que tocaremos en los próximos tutoriales sobre Windows Server 2008.

Hasta entonces.

—–

Oscar Abad

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, scripts powershell, sistemas, tutoriales, windows server 2008 Etiquetado como: aprendeinformaticaconmigo, crear unidades organizativas, crear usuarios, directorio activo

25 junio, 2010 Por oscar Deja un comentario

Crear Unidades Organizativas con Windows Powershell

A la hora de intentar sacarle el mayor partido a Window Powershell, se me antojó que quería poder crear Unidades Organizativas con un script de Powershell.

Todavía no me he metido con Windows Powershell 2.0, pero lo haré pronto.

Este script es válido para las dos versiones.

Bueno, a lo que vamos… Para crear una Unidad Organizativa mediante Windows Powershell tenemos que realizar los pasos habituales que realizamos a la hora de crear cualquier otro objeto del Directorio Activo. Salvando las distancias, eso si.

En primer lugar guardaremos en una variable la conexión al dominio en el que crearemos la Unidad Organizativa. Os informo, por si no lo sabeis ya, que yo utilizo en dominio «aic.local».

$objDominio=[ADSI]»LDAP://DC=aic,DC=local»

A continuación guardaremos en otra variable el comando de creación de la unidad organizativa, de la siguiente forma:

$objOU=$objDominio.Create(«OrganizationalUnit»,»ou=prueba»)

Ahora, ya que estamos, incluiremos un comando para rellenar el campo «descripción» de la Unidad Organizativa.

objOU=Put(«description»,»Unidad Organizativa de prueba»)

Ahora, como siempre, ejecutamos el comando para que se apliquen los anteriores.

$objOU.SetInfo()

Ya está creada la nueva Unidad Organizativa «prueba».

En la captura siguiente podeis ver el script al completo:

creoupwsh-01

Para comprobar lo que acabamos de hacer, abrimos «Usuarios y Equipos de Active Directory»

creoupwsh-02

Hasta aquí llega este tutorial.

Nos vemos en el siguiente.

Saludos.

—–

Oscar Abad

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

oscar
oscar

Programador WordPress freelance

Publicado en: powershell, scripts powershell, sistemas Etiquetado como: aprendeinformaticaconmigo, crear ou, directorio activo, scripts

16 junio, 2009 Por oscar 1 comentario

Script Powershell: Informacion sobre la instalacion de un programa en un equipo remoto

Continuando con el ultimo script que nos habiamos currado en el que recibiamos la lista de software instalado en un equipo remoto en un fichero de texto, en esta ocasion vamos a hacer algo parecido pero diferente.

Lo que me hace falta a mi ahora es saber si un equipo tiene instalado el «ultravnc», por ejemplo. Nosotros vamos a hacer el ejemplo con el «ultravnc«.

Os pongo el script completo y luego explico lo que vea necesario:

#script: instaladoultravnc.ps1
#version: 1.0
#
#Autor: Oscar Abad
#Web: https://www.aprendeinformaticaconmigo.com
#Fecha: 7 de Abril de 2009
#
#Tipo: Powershell
#Funcion: Obtener en un fichero de texto el software instalado en un equipo remoto que
#coincida con «ultravnc».
#Parametros: Necesita un nombre de equipo como parametro de entrada.
#Uso: ./instaladoultravnc.ps1
#
Param($equipo) #parametro de entrada
$equipo > instaladoultravnc.txt
«—————-» >> instaladoultravnc.txt
$softinstalado = Get-WmiObject -class win32_product -computername $equipo | Where-Object {$_.Name -like «ultravnc*»}
$softinstalado >> instaladoultravnc.txt

————————————————-

Bueno, bueno… aqui tenemos un poco mas de faena.
Nos queda claro del script anterior que la linea de Param la utilizamos para pedir un parametro de entrada, un nombre de equipo.
La segunda linea:
$equipo > instaladoultravnc.txt
Lo que hace es crear un fichero de texto y si esta creado lo machaca. Escribe en este fichero el nombre del equipo del que hacemos la peticion.

La tercera linea no hace otra cosa que añadir mediante «>>» una serie de guiones al fichero, actua como separador. Es una chorrada, pero bueno…

La cuarta linea es la que tiene el contenido que nos interesa. Hacemos una consulta a la clase win32_product del equipo remoto, pero en este caso le decimos que nos guarde el la variable $softinstalado solo las entradas que coincidan con «ultravnc*«.

Se entiende ¿no?

Y en la ultima linea le decimos que guarde la infomacion de la variable en el fichero de texto.

Pues no tiene mas, asi es y asi se lo hemos contado.

Para cualquier duda, ya sabeis: comentario al canto.

Venga, 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 Etiquetado como: aprendeinformaticaconmigo, remoto, scripts, software instalado, windows powershell

12 junio, 2009 Por oscar 11 comentarios

Script Powershell: software instalado en equipos remotos

Bueno, vamos a darle un poco mas de vidilla al tema de Powershell, que lo tenemos un poco parado.

En este caso, vamos a crear un script que nos va a generar un fichero de texto con la lista del software instalado en un equipo remoto. ¿a que mola?

Os pongo el script completo como lo tengo yo y luego explico un par de cosas.

#Script: Softinstaladoequipo.ps1
#Version: 1.0
#
#Autor: Oscar Abad Folgueira
#Web: https://www.aprendeinformaticaconmigo.com
#
#Tipo: Powershell
#Funcion: Obtener una lista en un fichero de texto de todo el software instalado en un equipo.
#Parametros: Necesita un nombre de equipo como parametro de entrada.
#Uso: ./softinstaladoequipo.ps1
#
#
Param($equipo) #parametro de entrada
$softinstalado = Get-WmiObject -class win32_Product -computername ‘$equipo’
$softinstalado > softwareinstalado.txt

———————————————————
Ya se que no es necesario decirlo, pero por si acaso os comento que todo lo que va detras del caracter almoadilla (#), es un comentario.

Por consiguiente, solo tenemos 3 lineas de codigo en el script.
La primera:
Param($equipo)
Ya sabreis del script anterior que esto nos sirve para indicar que nos hace falta un parametro para ejecutar el script. En este caso un nombre de equipo valido.

La seguna linea efectiva del script:

$softinstalado = Get-WmiObject -class win32_Product -computername ‘$equipo’

Gracias a Get-WmiObject, y a la clase win32_product, lo que hacemos es decirle que guarde en la variable $softinstalado, la informacion del software instalado en el equipo remoto «$equipo«.

Y la ultima linea:

$softinstalado > softwareinstalado.txt

Vuelca esa informacion en un fichero de texto para que podamos revisarlo con mas detenimiento.

Creo que es bastante sencillo pero de mucha utilidad.

La pega que parece tener este script, es que solo nos devuelve el software instalado en el equipo con MSI, pero no me hagais mucho caso. Podeis probar a sacar un listado del equipo local y posteriormente compararlo con la lista en «Agregar o quitar programas» del panel de control de Windows y vereis que hay diferencia.

Aun asi, a mi me hace un gran servicio.

Esto no va a quedar aqui ni mucho menos, en posteriores scripts,veremos como obtener la informacion de un programa en concreto y no toda la lista. Y si teneis paciencia, mas adelante desinstalaremos software remotamente. Como mola esto ¿que no?

Venga, de momento es todo por hoy. Lo probais y me comentais si os ha funcionado correctamente u os ha dado algun tipo de error.

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: aprendeinformaticaconmigo, remoto, scripts, software instalado, windows 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

2 junio, 2009 Por oscar 3 comentarios

Script Powershell – Apagar equipos remotamente – Ver. 2.0

Vamos a trabajar un poco mas con el script que escribimos en el articulo anterior dedicado a scripts en Powershell y vamos a añadirle una linea que nos ayudara.

Si habeis probado el script que os comento, os habra pasado que si el equipo que queriais a apagar ya estaba apagado, os mostrara un mensaje de error. Para solucionar este problema, vamos a comprobar el estado del equipo antes de lanzar el apagado.

Para ello utilizaremos la clase «win32_pingstatuscode» que nos facilita Windows a traves de WMI.

Hay varias formas de trabajar con esta funcion, pero yo he preferido utilizar la siguiente:

get-wmiobject -query «select statuscode from win32_pingstatus where address = ‘$equipo'»

Con esta line de codigo, lo que hacemos es una consulta, de esas del tipo de sql, ¿os suena algo, no?

La consulta lo que hace es recoger el valor de la propiedad «statuscode» de la clase «win32_pingstatus» del equipo en cuestion.  Como esta linea por si misma no nos va a mostrar nada, tendremos que guardarla en una variable para que podamos trabajar con el valor devuelto y, en funcion del resultado, hacer una cosa u otra.

La linea de codigo completa quedaria de la siguiente forma:

$estado = get-wmiobject -query «select statuscode from win32_pingstatus where address = ‘$equipo'»

Vale, ahora tenemos almacenado el valor del estado del equipo en la variable «$estado«.

En esta pagina nos describen la clase «win32_pingstatus» y sus miembros. Nos viene bien para saber los posibles valores que puede tomar «statuscode«.

Bueno, no esperamos mas y os pongo como quedaria el codigo:


#Script: apagarequipos.ps1
#Version: 2.0
#
#Autor: Oscar Abad Folgueira
#Web:   https://www.aprendeinformaticaconmigo.com
#Fecha: 25 de Abril de 2009
#
#Tipo: Powershell
#Funcion: Apagar equipos remotamente. Estga version comprueba el estado del equipo

#antes de lanzar el apagado.
#
#Parametros: nombre el equipo a apagar.
#Uso: apagarequipos.ps1 equipo
#
#

Param($equipo)         #parametro de entrada (Nombre del equipo a apagar).

$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)
}


Ademas de lo que hemos comentado antes, podemos ver que hemos añadido un if para evaluar el estado del equipo en cuestion. Si el equipo esta apagado, no hace nada, pero si no lo esta, lanza el apagado.

No hay mucho mas que decir, simplemente que lo probeis y me comenteis que tal os ha ido y si os es util.

En la siguiente version de este script, veremos como podemos utilizar un fichero de texto en el que hemos introducido previamente el nombre de los equipos que queremos apagar para que nos apague una serie de equipos uno detras de otro sin tener que hacer uno a uno a mano. Ademas, nos servira para crear una tarea programada para que se apaguen por la noche o el fin de semana.

Venga, 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: aprendeinformaticaconmigo, powershell, script, script powershell, windows, wmi

31 mayo, 2009 Por oscar 2 comentarios

Script Powershell – Apagar equipos remotamente

Bueno, como lo prometido es deuda, hoy vamos a escribir nuestro primer script en Powershell.

En este caso vamos a utilizarlo para apagar equipos remotamente.

A continuacion muestro el codigo completo:


#Script: apagarequipos.ps1
#Version: 1.0
#
#Autor: Oscar Abad Folgueira
#Web:   https://www.aprendeinformaticaconmigo.com
#Fecha: 25 de Abril de 2009
#
#Tipo: Powershell
#Funcion: Apagar equipos remotamente.
#
#Parametros: nombre el equipo a apagar.
#Uso: apagarequipos.ps1 equipo
#
#

Param($equipo)         #parametro de entrada (Nombre del equipo a apagar).

(get-wmiobject -class win32_operatingsystem -computername $equipo).win32shutdown(12)


Ahora toca explicar un poco lo que hace el script y como lo hace.

En primer lugar debemos saber, si no lo sabemos ya o nos lo imaginamos, que todo lo que escribimos despues del caracter almoadilla (#) es un comentario. Por consiguiente, si nos fijamos, nuestro script consta de 2 lineas unicamente.

La primera linea efectiva: Param($equipo) la utilizamos para recoger en la variable $equipo el nombre del equipo que hemos tecleado despues de apagarequipos.ps1 y que se corresponde con el equipo que queremos apagar.

Por ejemplo, cuando utilicemos el script, lo haremos de la siguiente forma: apagarequipos.ps1 compras1

Esto lo que hara sera intentar apagar el equipo «compras1» si es que esta encendido, claro. Si no está encendido nos dara un mensaje de error. De todas formas, como este script es solo para que veamos como funciona esto y no nos compliquemos demasiado, no os preocupeis por que lo vamos a mejorar un poco en posteriores artiulos.

La segunda linea efectiva lo que hace es utilizar las clases WMI de Windows. En este caso utilizamos la clase «win32_operatingsystem» la cual, entre otros, dispone de un metodo llamado «win32shutdown» y admite una serie de valores.

Para saber mas sobre este metodo y sobre los valores que admite, podemos visitar esta pagina web.

Para poder probar este script, ya sabeis, y si no lo sabeis os lo comento ahora. Teneis que copiar el codigo que os he puesto arriba y guardarlo en un fichero con extension «ps1«. El resto corre de vuestra cuenta.

No estaria de mas que le echarais un vistazo al apartado de Powershell del Blog para que os aclare algunas cosillas que puede que no las tengamos claras en este momento.

Bueno, creo que con esto tenemos suficiente para empezar con los scripts en Powershell. Ya iremos viendo mas y mas poco a poco.

Venga, a pasarlo bien!!

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

oscar
oscar

Programador WordPress freelance

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

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