Aprende Informatica Conmigo

  • Inicio
  • Contenido Anterior
    • VIDEOTUTORIALES
    • Windows Server 2008
    • 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

Acerca de oscar

Programador WordPress freelance

Comentarios

  1. joseangel dice

    27 julio, 2009 a las 10:42

    A ver no tengo mucha idea de informatica pero por lo que \"conozco\" he de crear un .bat y editarlo con el block de notas mismo…

    #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 ‘$//Mostrador/automovil’
    $softinstalado > softwareinstalado.txt

    Asi me generaria un txt con el equipo que tengo en la red \"MOSTRADOR/AUTOMOVIL\"… ¿No?… pues no sale nada.. Indicame como he de hacerlo muchas gracias de antemano.

    Accede para responder
    • oscar dice

      27 julio, 2009 a las 11:37

      Saludos, Joseangel.
      Me pillas recien llegado de vacaciones y un poco espeso todavia con el tema de Powershell, pero mirando las modificaciones que has realizado en el script «softinstaladoequipo.ps1«, algo veo…
      en le línea: $softinstalado = Get-WmiObject -class win32_Product -computername ‘$//Mostrador/automovil’
      no comprendo la ultima parte: ‘$//Mostrador/automovil’
      despues de -computername debes poner el nombre del equipo. En el caso del script, no debes modificar esta parte puesto que ‘$equipo’ hace referencia al nombre del equipo que le has indicado en la llamada.
      Para que me entiendas mejor, deja el script como estaba originalmente, si modificar nada y cuando lo ejecutes, le indicas el nombre del equipo:
      >softinstaladoequipo.ps1 automovil
      Haz pruebas con esto a ver que tal te va.
      Venga, animos y sigue adelante.

      Accede para responder
  2. sergio dice

    27 julio, 2009 a las 12:29

    Una cosa, no es un archivo .bat, sino .ps1
    Haces muy bien en usar el bloc de notas si quieres hacerlo, pero si vas a hacer mas cosillas prueba el POWERGUI que se recomienda en esta web.

    Aprovecho para agradecer tu secciones de Powershell y todo lo que hablas de montar dominios etc…..Espero que añadas muchos scripts y lo mas rapido posible (lo disfruto bastante) 🙂

    Saludos a todos!!

    Accede para responder
  3. joseangel dice

    28 julio, 2009 a las 7:54

    Jo**r oscar y sergio soys un cracks, ayer postee y me contestastes en 0’…. gracias lo primero…

    Ahora te indico lo que «necesito» y lo que tengo… con el bat este que he ejecutado o «ps1» (os vuelvo a recordar que estoy un poco pez en este tema), al ejecutarlo en un equipo me crea un txt con el software que tiene instalado.

    Sobre la ultima fila añadida \\Servidor\COMPARTIR\listado_programas.txt’ usando esa direccion me sube el txt a un servidor

    Este es el bat que estoy currandome a ver como lo veis..

    @echo off
    regedit /a %TEMP%\filename.reg «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall»
    for /f «Skip=1 Tokens=*» %%i in (‘type %TEMP%\Filename.reg’) do set line=»%%i»&call :parse
    goto :EOF
    :parse
    set work=%line:~2,11%
    set work=%work:»=%
    If NOT «%work%» EQU «DisplayName» goto :EOF
    set work=%line:~16,120%
    set work=%work:»=%
    @echo %work%
    @echo %work% >> \\Servidor\COMPARTIR\listado_programas.txt

    La «idea» seria modificarlo para que guardara el txt con el nombre del equipo que lo genera o la ip del equipo que lo guarda ya que en la empresa hay unos 40 equipos y deberian guardarse con un orden o un nombre al menos del equipo que lo genera, no se si me explico…

    Estoy viendo tambien software para la conexion remota e identificacion del software instalado en equipos de la red como «AdvancedRemoteInfo», «Everest», «EMCO Network Inventory Enterprise», «ARI» entre otros pero la idea del bat me parece bastante buena.

    Gracias nuevamente por vuestro tiempo.

    Accede para responder
    • oscar dice

      28 julio, 2009 a las 9:07

      Buenos dias Joseangel.
      En primer lugar tengo que decir que veo que te manejas muy bien con esto de los scripts. Digas lo que digas…
      En segundo lugar, creo que la cuestion que planteas se reduce todo a que quieres que el nombre del fichero que se crea, quieres que tenga el nombre del equipo del que pides la informacion de software instalado, ¿no? Pues bien, si este es el caso, te aconsejaria que modificaras la ultima linea y donde pones el nombre del fichero «listado_programas.txt» lo modificaras por la variable que contiene el nombre del equipo: $equipo. Es decir, por ejemplo:
      dir | out-file «$equipo.txt»
      Este comando crea un fichero cuyo nombre es el nombre de la variable equipo y con la extension .txt.
      Para terminar, me gustaria saber exactamente que que es lo que hace la primera parte de tu sript por que se me escapa un poco. Si lo que quieres es obtener la lista de los programas que estan dentro de esa cadena de registro, yo utilizaria el comando Get-WmiObject -class win32_Product.
      De todas formas, creo que lo que estas haciendo tu es crear un script cd cmd sin tocar para nada Powershell, con los beneficios que esto tiene.
      Bueno, me lo explicas en un momento si puedes.
      Venga, espero que te haya servido de ayuda.

      Accede para responder
  4. joseangel dice

    28 julio, 2009 a las 16:08

    Yo estoy haciendo un «bat» desde el block de notas de windows, de echo es un bat que encontre googleando, no se si el scrip que tu has echo funcionara igual que el bat que yo te comento si es asi agradeceria que me dijeses como hacer funcionar los scripts ya que segun «creo» no hablamos de lo mismo *.bat y scripts ¿Puedes ayudarme tu a lo que necesito?

    Ya sabes como he comentado antes es para controlar que hay instalado en cada equipo de una red de unos 30 ordenadores sin que el dueño del pc se entere, seria interesante poder hacerlo desde un ordenador en remoto aunque me puedo colar dentro de los pc’s y dejarle «el regalito oculto».

    Gracias nuevamente por tu pronta respuesta.

    Accede para responder
  5. Jose Angel dice

    11 agosto, 2009 a las 18:09

    Yo estoy haciendo un “bat” desde el block de notas de windows, de echo es un bat que encontre googleando, no se si el scrip que tu has echo funcionara igual que el bat que yo te comento si es asi agradeceria que me dijeses como hacer funcionar los scripts ya que segun “creo” no hablamos de lo mismo *.bat y scripts ¿Puedes ayudarme tu a lo que necesito?

    Ya sabes como he comentado antes es para controlar que hay instalado en cada equipo de una red de unos 30 ordenadores sin que el dueño del pc se entere, seria interesante poder hacerlo desde un ordenador en remoto aunque me puedo colar dentro de los pc’s y dejarle “el regalito oculto”.

    Gracias nuevamente por tu pronta respuesta.

    help me please!!!!

    Accede para responder
    • oscar dice

      14 agosto, 2009 a las 6:49

      Saludos, Jose Angel.
      Ambos son scripts. Tanto los «bat» o «cmd» como los «ps».
      Para ejecutar los scripts de powershell que he puesto en el blog, necesitas tener instalado en tu equipo (no hace falta que este instalado en el equipo de destino) el Powershell 1.0.
      Desde tu equipo lanzas el script hacia cualquier equipo que tengas en tu red. Pruebalo y veras.
      Venga, animo y palante!

      Accede para responder
  6. juan carlos dice

    11 marzo, 2010 a las 0:46

    hola, sabes me interesa mucho powershell quieciera conocer si hay un script para encender un equipo de forma remota.
    espero su pronta respuesta.

    Accede para responder
  7. Copernico dice

    17 enero, 2011 a las 22:39

    Saludos con todos. Cómo debo ejecutar el comando para que me saque el inventario pues al ejecutarlo me genera el archivo de salida vacío. He intentado ejecutarlo así:
    softinstalado -equipo mipc
    softinstalado mipc
    y nada

    Accede para responder
  8. El tio Caj dice

    14 diciembre, 2011 a las 10:25

    Estoy tratando de poner en marchar tu script pero nada. Le he pasado el parámetro -credential para usar el usuario administrador del dominio donde pretendo utilizarlo pero 0. Siempre me saca error ManagementException del Get-WmiObject cuando uso Win32_product pero si utilizo Win32_services, por ejemplo, si que me lo coge todo correctamente. Sugerencias?

    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