El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

PowerShell: Cmdlet Para Inventariar con WMI y Obtener Ficheros HTML con los Resultados

Posted by urpiano en Miércoles 28 \28\UTC noviembre \28\UTC 2012

Inspirado por esta pregunta del foro general de scripting de Technet he desarrollado este Cmdlet. Respondí a la persona que preguntaba con este script VbScript. Pensando en la facilidad de PowerShell a la hora de entenderse con WMI, he desarrollado este otro script en PowerShell, que hace lo mismo que el anterior, pero con cualquier clase WMI, no sólo con Win32_Product.

No sólo eso, si no que además como permite encaminamiento de la clase a listar o incluso pasar un array de clases, y también pasar un array de equipos, es posible en una sola línea de ejecución realizar un completo inventario de muchos equipos, gracias a obtener la información de múltiples clases.

Además de lo anteriormente expuesto, el formato de salida de la información en el HTML es personalizable, pudiendo cambiarse el color de fondo o texto de los elementos o incluso pasar una hoja de estilo CSS completa.

El Cmdlet incluye ayuda, pego a continuación la ayuda con modificador -Detailed (esta ayuda se basa en la prestación de ayuda basada en comentarios de PowerShell 2.0 ¿Qué todavía tienes la versión 1.0 y no la 2.0? ¿A qué esperas para instalarla si es mucho mejor?):

NOMBRE
    Out-Wmi2HTML
    
SINOPSIS
    Este Cmdlet genera un fichero HTML con la información de las instancias
    de una clase WMI.
    
SINTAXIS
    Out-Wmi2HTML [-Path] <String> [-Class] <String[]> [[-Namespace] <String>] [[-Filter] <String>] [[
    -Authority] <String>] [[-Authentication] {Default | None | Connect | Call | Packet | PacketIntegr
    ity | PacketPrivacy | Unchanged}] [[-ComputerName] <String[]>] [-EnableAllPrivileges] [[-Credenti
    al] <Object>] [[-CSS] <String>] [-DontShowLegend] [-Banded] [-FirstColumn] [[-Band1BackColor] <St
    ring>] [[-Band1TextColor] <String>] [[-Band2BackColor] <String>] [[-Band2TextColor] <String>] [[-
    FirstColumnBackColor] <String>] [[-FirstColumnTextColor] <String>] [[-LegendBackColor] <String>] 
    [[-LegendTextColor] <String>] [[-InstanceBackColor] <String>] [[-InstanceTextColor] <String>] [[-
    RgbBand1BackColor] <Byte[]>] [[-RgbBand1TextColor] <Byte[]>] [[-RgbBand2BackColor] <Byte[]>] [[-R
    gbBand2TextColor] <Byte[]>] [[-RgbFirstColumnBackColor] <Byte[]>] [[-RgbFirstColumnTextColor] <By
    te[]>] [[-RgbLegendBackColor] <Byte[]>] [[-RgbLegendTextColor] <Byte[]>] [[-RgbInstanceBackColor]
     <Byte[]>] [[-RgbInstanceTextColor] <Byte[]>] [<CommonParameters>]
    
DESCRIPCIÓN
    Este Cmdlet permite generar un fichero HTML con la información de las
    instancias de una clase WMI. La información es presentada como una tabla en la
    que la primera columna contiene los nombres de las propiedades y en la segunda
    sus valores. En el caso de que los valores sean un array, se presentará en la
    celda correspondiente como una cadena multilínea, mostrando un elemento del
    array por línea.
    
    El Cmdlet permite variar el formato de la tabla con los resultados en varias
    maneras:
    - Pasando los colores de los elementos, tanto los de fondo (background) como
    los de texto (Text), como cadena hexadecimal, el mismo tipo de cadena que
    se pone como color en las hojas de estilo CSS (por ejemplo rojo =
    "ff0000"). Los elementos a los que se pueden variar los colores son:
      · Instancias: cada instancia tiene una línea en la tabla en la que
                    combinan las celdas de nombre de propiedad y valor para
                    poner el nombre de la instancia cuyas propiedades van a
                    continuación. Se puede especificar el color del texto y
                    el fondo.
      · Leyenda   : cada instancia puede mostrar una línea en la tabla en la
                    muestre una leyenda que indica que la columna de la
                    izquierda corresponde a los nombres de las propiedades
                    y la de la derecha a sus valores. Se puede establecer
                    el color de texto y fondo de esta leyenda, cuando se ha
                    establecido que sea mostrada.
      · 1ª Columna: la columna con los nombres de las propiedades puede
                    tener o no distinto estilo que la columna de valores. En
                    el caso de tener distinto estilo, se puede establecer el
                    color de texto y el de fondo para esta primera columna.
      · Banda1    : Se pueden definir los colores de fondo y texto para los
                    nombres de propiedad (si no se ha establecido que tengan
                    distinto estilo) y sus valores. Si la tabla no es
                    bandeada, todos los valores y, si procede, sus nombres
                    de propiedades tendrán estos colores; si la tabla es
                    bandeada, tendrán estos colores las filas impares,
                    teniendo las pares los colores de Banda 2.
      · Banda1    : si la tabla es bandeada, las filas pares tendrán estos
                    colores y las impares los de Banda 1; si la tabla no es
                    bandeada estos colores serán ignorados, teniendo sólo
                    los colores de Banda 1.
    - Pasando los colores de los elementos, tanto los de fondo (background) como
    los de texto (Text), como array de bytes, array de tres elementos y que
    conforman un color en formato RGB (por ejemplo "255,0,0" = rojo). Los
    elementos que se pueden definir así son los mismo, y con los mismos
    conceptos que vimos en el anterior punto sobre colores en formato de
    cadena hexadecimal.
    - Estableciendo si se verá o no la leyenda, que muestra que la primera
    columna es la de nombres de propiedades y la segunda la de valores.
    - Estableciendo si la primera columna, la de nombres de propiedades, tendrá
    un estilo diferente a la columna de valores; es decir, si tendran los
    nombres de las propiedades aspecto de encabezado.
    - Estableciendo si la tabla será o no bandeada, lo que hace que las filas
    impares tengan un estilo y las pares otro o que todas tengan el mismo
    estilo.
    - Estableciendo la hoja de estilos CSS completamente, de manera que se
    personalice completamente la apariencia de la tabla (colores, fuentes,
    etc.).
    
    El Cmdlet admite encaminamiento, permitiendo recibir nombres de clases en el
    mismo; si a esto unimos que el parámetro de equipo en el que consultar WMI es un
    parámetro al que se le puede pasar un array de nombres de equipos, podemos ver
    cómo en una sola línea de Powershell podemos inventariar varios equipos con
    varias clases a la vez.
    
    El Cmdlet genera, en la ruta recibida como parámetro, un fichero HTML por clase
    y equipo. Esto es, si por encaminamiento ponemos 3 clases y en el parámetro de
    equipos ponemos 5 nombres de equipo, el Cmdlet generará 15 ficheros HTML.
    
    El nombre de los ficheros tendrá esta sintaxis:
    
    YYYYMMDD_NombreEquipo_NombreClase.html
    
    Por ejemplo:
    
    20111126_Mortadelo-PC_Win32_BaseBoard.html
    
    En caso de que exista el fichero, será sobreescrito.
    

PARáMETROS
    -Path <String>
        Ruta (local o UNC) de la carpeta en la que se guardarán los ficheros
        HTML. Este parámetro admite los alias "Ruta", "P", "Carpeta", "R" y "C".
        
    -Class <String[]>
        Nombre de la clase de la que obtener sus instancias. Admite
        encaminamiento o un array de . Este parámetro admite los alias "Clase" y "Cls". 
        
        Este parámetro es un array de cadenas, esto es, se puede pasar más de una clase
        como sus nombres separados por comas, o incluso se puede pasar el resultado de 
        Get-Content sobre un fichero de texto en el que estÉn los nombres de las clases
        uno por línea.
        
    -Namespace <String>
        Espacio de nombres WMI en el que estña la clase. Si es omitido el
        espacio predeterminado es root\CIMv2. Este parámetro admite los alias "NS",
        "EspacioNombres" y "EN".
        
    -Filter <String>
        Especifica una cláusula Where que se usará como filtro. Se usa la
        sintaxis del lenguaje de consulta de WMI (WQL). Este parámetro admite los alias
        "Filtro" y "F". 
        
        Importante: no incluir la palabra clave WHERE en el valor del parámetro. Por
        ejemplo, los comandos siguientes devuelven solo los discos lógicos donde
        DeviceID es igual a 'c:' y los servicios donde el nombre es igual a 'WinRM', sin
        utilizar la palabra clave Where: 
        
        get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' " 
        get-wmiobject win32_service -filter "name='WinRM'"
        
    -Authority <String>
        Especifica la autoridad que se va a utilizar para autenticar la conexión
        de WMI. Puede especificarse la autenticación estándar NTLM o Kerberos. Para
        utilizar NTLM, se establece el valor de autoridad ntlmdomain:<nombreDeDominio>,
        donde <nombreDeDominio> identifica un nombre de dominio NTLM válido. Para
        utilizar Kerberos, se especifica kerberos:<nombreDeDominio>\<nombreDeServidor>.
        No se puede incluir el valor de autoridad cuando se conecta al equipo local.
        
    -Authentication
        Especifica el nivel de autenticación que se va a utilizar con la
        conexión de WMI. Los valores válidos son:
        
        -1: Unchanged
        0 : Default
        1 : None (no se realiza ninguna autenticación).
        2 : Connect (la autenticación se realiza solo cuando el cliente establece
        una relación con la aplicación).
        3 : Call (la autenticación se realiza solo al comienzo de cada llamada
        cuando la aplicación recibe la solicitud).
        4 : Packet (se autentican todos los datos que se reciben del cliente).
        5 : PacketIntegrity (se autentican y se comprueban todos los datos que se
        transfieren entre el cliente y la aplicación).
        6 : PacketPrivacy (se utilizan las propiedades de los demás niveles de
        autenticación y se cifran todos los datos).
        
    -ComputerName <String[]>
        Especifica el equipo en el que se desea ejecutar la operación de
        administración. El valor puede ser un nombre de dominio completo, un nombre
        NetBIOS o una dirección IP. Se usa el nombre del equipo local, localhost, o
        bien, un punto (.) para especificar el equipo local. El equipo local es el valor
        predeterminado. Cuando el equipo remoto está en un dominio que no es el del
        usuario, se debe usar un nombre de dominio completo.
        
        Este parámetro no se basa en la comunicación remota de Windows PowerShell, que
        utiliza WS-Management. Se puede usar el parámetro ComputerName de Get-WmiObject
        incluso si el equipo no está configurado para la ejecución de comandos remotos
        de WS-Management.
        
        Este parámetro es un array de cadenas, esto es, se puede pasar más de un equipo
        como sus nombres separados por comas, o incluso se puede pasar el resultado de 
        Get-Content sobre un fichero de texto en el que estÉn los nombres de los equipos
        uno por línea.
        
    -EnableAllPrivileges [<SwitchParameter>]
        Habilita todos los privilegios del usuario actual antes de que el
        comando realice la llamada a WMI.
        
    -Credential <Object>
        Especifica una cuenta de usuario con permiso para realizar esta acción.
        El valor predeterminado es el usuario actual. Se puede escribir un nombre de
        usuario, como "Usuario01", "Dominio01\Usuario01" o "Usuario@Contoso.com". O
        bien,se puede escribir el nombre de un objeto PSCredential, como el objeto
        devuelto por el cmdlet Get-Credential. Cuando se escribe un nombre de usuario,
        se solicitará una contraseña de forma interactiva.
        
    -CSS <String>
        Este parámetro recibe una hoja de estilo CSS completa, sin las
        etiquetas de apertura y cierre de hoja de estilo (<style type="text/css"> y
        </style>. Se requiere que si se van a especificar estilos personalizados y no
        estilos de etiqueta (estilos para todo el body, o todos los elementos td, por
        ejemplo) los estilos personalizados se llamen:
        
        - nombre_instancia: este es el estilo que se aplicará a la celda de
                        encabezamiento con el nombre de la instancia.
        - leyenda         : este es el estilo que se aplicará a la leyenda, donde se
                        indica que la columna de la izquierda tiene los nombres
                        de las propiedades y la de la derecha sus valores.
        - primera_columna : estilo que se aplica a la primera columna cuando se
                        presenta con diferente estilo que los valores (se pasa
                        el modificador FirstColumn).
        - banda1          : estilo que se aplica a todas las filas si no se pasó el
                        modificador Banded (incluidas las celdas de nombres de
                        propiedades si no se pasó el modificador FirstColumn).
                        Si se pasó el modificador Banded este estilo se aplica a
                        las filas impares.
        - banda2          : estilo que se aplica a todas las filas pares si se pasó
                        el modificador Banded (incluidas las celdas de nombres
                        de propiedades si no se pasó el modificador
                        FirstColumn). Si no se pasó el modificador Banded este
                        estilo se aplica a es ignorado.
                        
        Un ejemplo de valor válido para este parámetro es Éste (de hecho es la hoja de
        estilo predeterminada del script):
        
               .nombre_instancia{background-color: #4bacc6;
                                 font: 10pt Tahoma;
                                 font-weight: bold;
                                 color: #ffffff}
               .leyenda{background-color: #8b3331;
                        font:8pt Tahoma ;
                        font-weight:bold;
                        color: #ffffff;}
               .primera_columna{background-color: #c0504d;
                                font: 10pt Tahoma;
                                font-weight: bold;
                                color: #ffffff;}
               .banda1{background-color: #f2dddc;
                       font:10pt Tahoma;
                       color: #000000;}
               .banda2{background-color: #e6b9b8;
                       font:10pt Tahoma;
                       color: #000000;}
        
    -DontShowLegend [<SwitchParameter>]
        Si se pasa este modificador no se mostrará la leyenda, si se omite sí.
        
    -Banded [<SwitchParameter>]
        Si se pasa este modificador la tabla será bandeada, en caso contrario
        no. Este parámetro admite los alias "Bandeado" y "B".
        
    -FirstColumn [<SwitchParameter>]
        Si se pasa este modificador la primera columna tendrá distinto estilo
        que la columna de valores, en caso contrario tendrá el mismo. Este
        parámetro admite los alias "PrimeraColumna" y "FC".
        
    -Band1BackColor <String>
        Color de fondo, como cadena hexadecimal (rrvvaa), de las filas impares,
        si se ha pasado el modificador Banded o de todas las filas si no se pasó dicho
        modificador. Este parámetro admite el alias "B1BC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -Band1TextColor <String>
        Color de texto, como cadena hexadecimal (rrvvaa), de las filas impares,
        si se ha pasado el modificador Banded o de todas las filas si no se pasó dicho
        modificador. Este parámetro admite el alias "B1BC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -Band2BackColor <String>
        Color de fondo, como cadena hexadecimal (rrvvaa), de las filas pares,
        si se ha pasado el modificador Banded; si no se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "B1BC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -Band2TextColor <String>
        Color de texto, como cadena hexadecimal (rrvvaa), de las filas pares,
        si se ha pasado el modificador Banded; si no se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "B2TC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -FirstColumnBackColor <String>
        Color de fondo, como cadena hexadecimal (rrvvaa), de la primera
        columna, si se ha pasado el modificador FirstColumn; si no se pasó dicho
        modificador este parámetro no tendrá efecto. Admite el alias "FCBC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -FirstColumnTextColor <String>
        Color de texto, como cadena hexadecimal (rrvvaa), de la primera
        columna, si se ha pasado el modificador FirstColumn; si no se pasó dicho
        modificador este parámetro no tendrá efecto. Admite el alias "FCTC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -LegendBackColor <String>
        Color de fondo, como cadena hexadecimal (rrvvaa), de la leyenda, si no
        se ha pasado el modificador DontShowLegend; si se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "LBC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -LegendTextColor <String>
        Color de texto, como cadena hexadecimal (rrvvaa), de la leyenda, si no
        se ha pasado el modificador DontShowLegend; si se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "LTC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -InstanceBackColor <String>
        Color de fondo, como cadena hexadecimal (rrvvaa), del nombre de la
        instancia. Este parámetro admite el alias "IBC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -InstanceTextColor <String>
        Color de texto, como cadena hexadecimal (rrvvaa), del nombre de la
        instancia. Este parámetro admite el alias "ITC". 
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbBand1BackColor <Byte[]>
        Color de fondo, como array decimal (R,V,A), de las filas impares, si se
        ha pasado el modificador Banded o de todas las filas si no se pasó dicho
        modificador. Este parámetro admite el alias "RB1BC".
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbBand1TextColor <Byte[]>
        Color de texto, como array decimal (R,V,A), de las filas impares, si se
        ha pasado el modificador Banded o de todas las filas si no se pasó dicho
        modificador. Este parámetro admite el alias "RB1TC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbBand2BackColor <Byte[]>
        Color de fondo, como array decimal (R,V,A), de las filas pares, si se ha
        pasado el modificador Banded; si no se pasó dicho modificador este parámetro no
        tendrá efecto. Admite el alias "RB2BC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbBand2TextColor <Byte[]>
        Color de texto, como array decimal (R,V,A), de las filas pares, si se ha
        pasado el modificador Banded; si no se pasó dicho modificador este parámetro no
        tendrá efecto. Admite el alias "RB2TC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbFirstColumnBackColor <Byte[]>
        Color de fondo, como array decimal (R,V,A), de la primera columna, si se
        ha pasado el modificador FirstColumn; si no se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "RFCBC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbFirstColumnTextColor <Byte[]>
        Color de texto, como array decimal (R,V,A), de la primera columna, si se
        ha pasado el modificador FirstColumn; si no se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "RFCTC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbLegendBackColor <Byte[]>
        Color de fondo, como array decimal (R,V,A), de la leyenda, si no se ha
        pasado el modificador DontShowLegend; si se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "RLBC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbLegendTextColor <Byte[]>
        Color de texto, como array decimal (R,V,A), de la leyenda, si no se ha
        pasado el modificador DontShowLegend; si se pasó dicho modificador este
        parámetro no tendrá efecto. Admite el alias "RLTC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbInstanceBackColor <Byte[]>
        Color de fondo, como array decimal (R,V,A), del nombre de la instancia.
        Este parámetro admite el alias "RIBC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    -RgbInstanceTextColor <Byte[]>
        Color de texto, como array decimal (R,V,A), del nombre de la instancia.
        Este parámetro admite el alias "RITC". 
        
        El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
        centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
        verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
        con valor cero. Si se pasan más de tres elementos, los elementos por encima del
        tercero serán ignorados. El valor de los elementos estará comprendido entre
        0 y 255.
        
        Si se pasa el parámetro CSS se ignorará este parámetro de color.
        
    <CommonParameters>
        Este cmdlet admite los parámetros comunes Verbose, Debug,
        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
        OutBuffer y OutVariable. Para obtener más información, escriba:
        "get-help about_commonparameters".
    
    -------------------------- EJEMPLO 1 --------------------------
    
    PS C:\>Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard
    
    Genera un fichero HTML con información sobre la placa base del equipo local y lo
    guarda en la carpeta de red \\bacteriosrv\inventario.
    
    -------------------------- EJEMPLO 2 --------------------------
    
    PS C:\>Out-Wmi2HTML -Path \\bacteriosrv\inventario `
    >> -Class Win32_BaseBoard,Win32_OperatingSystem
    Genera un fichero HTML con información sobre la placa base y otro con
    información sobre el sistema operativo del equipo local y lo guarda en la
    carpeta de red \\bacteriosrv\inventario.
    
    -------------------------- EJEMPLO 3 --------------------------
    
    PS C:\>"Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C \\bacteriosrv\inventario -Cls Win32_BaseBoard
    
    Genera dos ficheros HTML con información sobre los productos instalados con
    Windows Installer y los procesos en ejecución y los guarda en la carpeta de red
    \\bacteriosrv\inventario.
    
    -------------------------- EJEMPLO 4 --------------------------
    
    PS C:\>"Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario -Cls Win32_BaseBoard `
    >> -ComputerName mortadelo-pc,filemon-pc,ofelia-pc
    
    Genera dos ficheros HTML con información sobre los productos instalados con
    Windows Installer y los procesos en ejecución, por cada uno de los equipos
    mortadelo-pc, filemon-pc y ofelia-pc (en total 6 ficheros HTML), y los guarda en
    la carpeta de local d:\inventario.
    
    -------------------------- EJEMPLO 5 --------------------------
    
    PS C:\>"Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario `
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn
    
    Genera dos ficheros HTML con información sobre los productos instalados con
    Windows Installer y los procesos en ejecución, por cada uno de los equipos que
    están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
    [2 * equipos] ficheros HTML), y los guarda en la carpeta local d:\inventario.
    Las tablas resultantes estarán bandeadas y con la primera columna puesta como
    encabezado.
    
    -------------------------- EJEMPLO 6 --------------------------
    
    PS C:\>Out-Wmi2HTML -C d:\inventario `
    >> -Class (Get-Content d:\Listados\Clases.txt)`
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn
    
    Genera tantos ficheros HTML como nombres de clases, uno por línea, estÉn
    contenidos en el fichero d:\Listados\Clases.txt, por cada uno de los equipos que
    están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
    [nclases * nequipos] ficheros HTML), y los guarda en la carpeta local
    d:\inventario. Las tablas resultantes estarán bandeadas y con la primera columna
    puesta como encabezado.
    
    -------------------------- EJEMPLO 7 --------------------------
    
    PS C:\>"Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario -DontShowLegend `
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn
    
    Genera dos ficheros HTML con información sobre los productos instalados con
    Windows Installer y los procesos en ejecución, por cada uno de los equipos que
    están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
    [2 * equipos] ficheros HTML), y los guarda en la carpeta local d:\inventario.
    Las tablas resultantes estarán bandeadas y con la primera columna puesta como
    encabezado, siendo omitida la leyenda.
    
    -------------------------- EJEMPLO 8 --------------------------
    
    PS C:\>$CSS = @"
    >> .nombre_instancia{background-color: #4bacc6;
    >>                  font: 10pt Tahoma;
    >>                  font-weight: bold;
    >>                  color: #ffffff}
    >> .leyenda{background-color: #8b3331;
    >>         font:8pt Tahoma ;
    >>         font-weight:bold;
    >>         color: #ffffff;}
    >> .primera_columna{background-color: #c0504d;
    >>                 font: 10pt Tahoma;
    >>                 font-weight: bold;
    >>                 color: #ffffff;}
    >> .banda1{background-color: #f2dddc;
    >>        font:10pt Tahoma;
    >>        color: #000000;}
    >> .banda2{background-color: #e6b9b8;
    >>        font:10pt Tahoma;
    >>        color: #000000;}
    >> "@
    >> 
    PS C:\> Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard `
                     -CSS $CSS
    
    Genera un fichero HTML con información sobre la placa base del equipo local y lo
    guarda en la carpeta de red \\bacteriosrv\inventario. El fichero tendrá como
    hoja de estilo CSS la pasada como variable $CSS en el parámetro CSS.
    
    -------------------------- EJEMPLO 9 --------------------------
    
    PS C:\>Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard `
    
    -Band1BackColor "af0000" `
                         -RgbBand2BackColor 200,255,190 `
                         -RgbInstanceBackColor 180,210 `
                         -RgbLegendBackColor 180 `
                         -LegendTextColor "ffffff" `
                         -Banded
    
    Genera un fichero HTML con información sobre la placa base del equipo local y lo
    guarda en la carpeta de red \\bacteriosrv\inventario. La tabla estará bandeada
    y con leyenda. El fichero tiene personalizados los colores de:
    
            - Fondo de bandas impares (verde amarillento claro).
            - Fondo de bandas pares (verde claro).
            - Fondo de nombre de instancia (verde caqui medio; 180,210 es lo
              mismo que 180,210,0).
            - Fondo de leyenda (rojo medio; 180 es lo mismo que 180,0,0).
            - Texto de leyenda (blanco).
    
NOTAS
        Fernando Reyes López © 11/2011

VÍNCULOS RELACIONADOS
     http://freyes.svetlian.com
     https://urpiano.wordpress.com

Este es el código del Cmdlet:

Function Get-HexColor(
    [parameter(Mandatory=$true,
               HelpMessage="Entre el valor RGB (rojo, verde, azul) en decimal")]
    [Byte[]] $RGB)
{
    # Recorremos el array si tiene menos de tres elementos desde el primero de
    # los que falte hasta el tercero
    For($Indice = $RGB.Count;$Indice -lt 3;$Indice++)
    {
        # Agregamos un nuevo elemento, con valor cero, al array
        $RGB += 0
    }
    # Calculamos el color. El primer elemento es el rojo, y debe ser
    # multiplicado por 65536, por tratarse del tercer byte. El segundo elemento
    # es el verde, y debe ser multiplicado por 256, por tratarse del segundo
    # byte. El tercer elemento es el azul y no es necesario multiplicarle, pues
    # se trata del primer byte. Una vez hechos esos cálculos se suman los
    # resultados con lo que habremos obtenido el color
    $Color = (($RGB[0] * 65536) + ($RGB[1] * 256) + $RGB[2])
    # Devolvemos el color en formato hexadecimal y con seis dígitos
    Return "{0:x6}" -f $Color

<#
    .SYNOPSIS
        Recibe un color en formato RGB decimal y lo devuelve en hexadecimal 

    .DESCRIPTION
        Esta función permite convertir a hexadecimal un color RGB, lo que la
hace ideal para obtener la cadena hexadecimal que se pone como color en las
hojas de estilo CSS. Por ejemplo, si queremos un rojo puro el valor RGB sería
"255,0,0"; esto pasado a hexadecimal sería "ff0000"; este ejemplo es muy simple,
obviamente, pero un color "123,43,234" no es tan obvio que en hexadecimal es
"7b27ea", de ahí la utilidad de esta función.

    .PARAMETER RGB
        Color RGB expresado como array de tres elementos, cuyo primer elemento,
el de más a la izquierda, es el rojo, el segundo el verde y el tercero el azul.
Se pueden pasar uno o dos elementos, en cuyo caso el/os elemento/s que falta/n
son considerados ceros. Por ejemplo, si se recibe "255" la devolución será
"ff0000" (rojo), si se recibe "0,255" la devolución será "00ff00" (verde).

    .EXAMPLE
        PS C:\> Get-HexColor 136
        880000
        
Obtenemos el valor en hexadecimal de un rojo oscuro cuyo valor en RGB es 122,0,0
    .EXAMPLE
        PS C:\> Get-HexColor 126,126
        7e7e00
        
Obtenemos el valor en hexadecimal de un verde caqui cuyo valor en RGB es
126,126,0
    .EXAMPLE
        PS C:\> Get-HexColor 128,128,255
        8080ff
        
Obtenemos el valor en hexadecimal de un azul añil cuyo valor en RGB es
128,128,255

    .INPUTS
    System.Byte[]
    
    .OUTPUTS
    System.String
    
    .NOTES
        Fernando Reyes López © 11/2012

    .LINK
        http://freyes.svetlian.com

    .LINK
        https://urpiano.wordpress.com
#>
}

Function Out-Wmi2HTML
{
    [CmdletBinding()]
    [OutputType([System.String[]])]
    param(
       [parameter(Mandatory=$true,
                  HelpMessage="Entre la carpeta donde generar el fichero HTML")]
       [Alias("Ruta","P","Carpeta","R","C")]
       [String]   $Path,
       [parameter(Mandatory=$true, `
                  ValueFromPipeline=$true, `
                  HelpMessage="Entre la clase WMI a listar")]
       [Alias("Clase","Cls")]
       [String[]]   $Class,
       [Alias("NS","EspacioNombres","EN")]
       [String]   $Namespace,
       [Alias("Filtro","F")]
       [String]   $Filter,
       [String]   $Authority,
       [System.Management.AuthenticationLevel]
                  $Authentication,
       [String[]] $ComputerName,
       [Switch]   $EnableAllPrivileges,
                  $Credential,
       [String]   $CSS,
       [Switch]   $DontShowLegend,
       [Alias("Bandeado","B")]
       [Switch]   $Banded,
       [Alias("PrimeraColumna","FC")]
       [Switch]   $FirstColumn,
       [Alias("B1BC")]
       [String]   $Band1BackColor = "f2dddc",
       [Alias("B1TC")]
       [String]   $Band1TextColor = "000000",
       [Alias("B2BC")]
       [String]   $Band2BackColor = "e6b9b8",
       [Alias("B2TC")]
       [String]   $Band2TextColor = "000000",
       [Alias("FCBC")]
       [String]   $FirstColumnBackColor = "c0504d",
       [Alias("FCTC")]
       [String]   $FirstColumnTextColor = "ffffff",
       [Alias("LBC")]
       [String]   $LegendBackColor = "8b3331",
       [Alias("LTC")]
       [String]   $LegendTextColor = "ffffff",
       [Alias("IBC")]
       [String]   $InstanceBackColor = "4bacc6",
       [Alias("ITC")]
       [String]   $InstanceTextColor = "ffffff",
       [Alias("RB1BC")]
       [Byte[]]   $RgbBand1BackColor,
       [Alias("RB1TC")]
       [Byte[]]   $RgbBand1TextColor,
       [Alias("RB2BC")]
       [Byte[]]   $RgbBand2BackColor,
       [Alias("RB2TC")]
       [Byte[]]   $RgbBand2TextColor,
       [Alias("RFCBC")]
       [Byte[]]   $RgbFirstColumnBackColor,
       [Alias("RFCTC")]
       [Byte[]]   $RgbFirstColumnTextColor,
       [Alias("RLBC")]
       [Byte[]]   $RgbLegendBackColor,
       [Alias("RLTC")]
       [Byte[]]   $RgbLegendTextColor,
       [Alias("RIBC")]
       [Byte[]]   $RgbInstanceBackColor,
       [Alias("RITC")]
       [Byte[]]   $RgbInstanceTextColor)
    
    Begin
    {
        # Mostramos un mensaje indicando el inicio del proceso
        Write-Host "Inicio de proceso"
        # Iniciamos los contadores de clases procesadas y de ficheros generados
        $Clases = 0
        $Ficheros = 0
        # Almacenamos los parámetros recibidos en la variable $Parametros para
        # usarla como splat a la hora de llamar a get-WmiObject
        $Parametros = $PSBoundParameters
        # Quitamos el parámetro Path, ya que no debemos pasarlo a get-WmiObject
        $Parametros.Remove("Path") | Out-Null
        # Si la ruta recibida como parámetro no contiene un slash inverso al
        # final se lo agregamos
        If($Path.SubString($Path.Length - 1,1) -ne "\")
        {
            $Path = "$Path`\"
        }
        # Si no se pasó el nombre del equipo a procesar, procesaremos el equipo
        # local; su nombre es el que ponemos en ComputerName
        If($ComputerName -eq $null)
        {
            $ComputerName = "$($env:computername)"
        }
        # Si se han recibido credenciales
        If($Credential -ne $null)
        {
            # En el caso de que se haya recibido sólo el nombre de usuario y no
            # un objeto PsCredential, obtenemos el PsCredential solicitando al
            # usuario que entre la contraseña del nombre de usuario que pasó
            # como parámetro
            If($Credential.GetType().FullName -eq "System.String")
            {
                $Credential = Get-Credential $Credential
            }
        }
        # Si se ha recibido el parámetro de color RGB RgbBand1BackColor
        If($RgbBand1BackColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $Band1BackColor
            $Band1BackColor = Get-HexColor $RgbBand1BackColor
            # Quitamos RgbBand1BackColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbBand1BackColor") | Out-Null
        }
        # Quitamos Band1BackColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("Band1BackColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbBand1TextColor
        If($RgbBand1TextColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $Band1TextColor
            $Band1TextColor = Get-HexColor $RgbBand1TextColor
            # Quitamos RgbBand1TextColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbBand1TextColor") | Out-Null
        }
        # Quitamos Band1TextColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("Band1TextColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbBand2BackColor
        If($RgbBand2BackColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $Band2BackColor
            $Band2BackColor = Get-HexColor $RgbBand2BackColor
            # Quitamos RgbBand2BackColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbBand2BackColor") | Out-Null
        }
        # Quitamos Band2BackColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("Band2BackColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbBand2TextColor
        If($RgbBand2TextColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $Band2TextColor
            $Band2TextColor = Get-HexColor $RgbBand2TextColor
            # Quitamos RgbBand2TextColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbBand2TextColor") | Out-Null
        }
        # Quitamos Band2TextColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("Band2TextColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbFirstColumnBackColor
        If($RgbFirstColumnBackColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $FirstColumnBackColor
            $FirstColumnBackColor = Get-HexColor $RgbFirstColumnBackColor
            # Quitamos RgbFirstColumnBackColor de los parámetros que se pasarán
            # a Get-WmiObject
            $Parametros.Remove("RgbFirstColumnBackColor") | Out-Null
        }
        # Quitamos FirstColumnBackColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("FirstColumnBackColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbFirstColumnTextColor
        If($RgbFirstColumnTextColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $FirstColumnTextColor
            $FirstColumnTextColor = Get-HexColor $RgbFirstColumnTextColor
            # Quitamos RgbFirstColumnTextColor de los parámetros que se pasarán
            # a Get-WmiObject
            $Parametros.Remove("RgbFirstColumnTextColor") | Out-Null
        }
        # Quitamos FirstColumnTextColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("FirstColumnTextColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbLegendBackColor
        If($RgbLegendBackColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $LegendBackColor
            $LegendBackColor = Get-HexColor $RgbLegendBackColor
            # Quitamos RgbLegendBackColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbLegendBackColor") | Out-Null
        }
        # Quitamos LegendBackColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("LegendBackColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbLegendTextColor
        If($RgbLegendTextColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $LegendTextColor
            $LegendTextColor = Get-HexColor $RgbLegendTextColor
            # Quitamos RgbLegendTextColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbLegendTextColor") | Out-Null
        }
        # Quitamos LegendTextColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("LegendTextColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbInstanceBackColor
        If($RgbInstanceBackColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $InstanceBackColor
            $InstanceBackColor = Get-HexColor $RgbInstanceBackColor
            # Quitamos RgbInstanceBackColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbInstanceBackColor") | Out-Null
        }
        # Quitamos InstanceBackColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("InstanceBackColor") | Out-Null
        # Si se ha recibido el parámetro de color RGB RgbInstanceTextColor
        If($RgbInstanceTextColor -ne $null)
        {
            # Asignamos el valor en hexadecimal del color RGB pasado
            # a $InstanceTextColor
            $InstanceTextColor = Get-HexColor $RgbInstanceTextColor
            # Quitamos RgbInstanceTextColor de los parámetros que se pasarán a
            # Get-WmiObject
            $Parametros.Remove("RgbInstanceTextColor") | Out-Null
        }
        # Quitamos InstanceTextColor de los parámetros que se
        # pasarán a Get-WmiObject
        $Parametros.Remove("InstanceTextColor") | Out-Null
        # Si no se ha recibido hoja de estilo, aplicamos la predeterminada
        If([String]::IsNullOrEmpty($CSS))
        {
            # Creamos una hoja de estilo
            $HojaCSS = "  <style type=""text/css"">`r`n"
            # Este estilo es para los nombres de las instancias
            $HojaCSS = "$($HojaCSS)   .nombre_instancia{background-color:"
            $HojaCSS = "$($HojaCSS) #$($InstanceBackColor);`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 21)font: 10pt Tahoma;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 21)font-weight: bold;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 21)color: #"
            $HojaCSS = "$($HojaCSS)$($InstanceTextColor)}`r`n"
            # Este estilo para los leyendas (donde pone:
            # "Nombre de propiedad | Valor"
            $HojaCSS = "$($HojaCSS)   .leyenda{background-color:"
            $HojaCSS = "$($HojaCSS) #$($LegendBackColor);`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 12)font:8pt Tahoma ;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 12)font-weight:bold;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 12)color: #$($LegendTextColor);}`r`n"
            # Este estilo para los nombres de las propiedades (primera columna)
            $HojaCSS = "$($HojaCSS)   .primera_columna{background-color:"
            $HojaCSS = "$($HojaCSS) #$($FirstColumnBackColor);`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 20)font: 10pt Tahoma;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 20)font-weight: bold;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 20)color: #$($FirstColumnTextColor);"
            $HojaCSS = "$($HojaCSS)}`r`n"
            # Los valores los pondremos bandeados, es decir, una fila de un
            # color, otra de otro.
            # Este estilo es el color 1
            $HojaCSS = "$($HojaCSS)   .banda1{background-color:"
            $HojaCSS = "$($HojaCSS) #$($Band1BackColor);`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 11)font:10pt Tahoma;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 11)color: #$($Band1TextColor);}`r`n"
            # Este estilo es el color 2
            $HojaCSS = "$($HojaCSS)   .banda2{background-color:"
            $HojaCSS = "$($HojaCSS) #$($Band2BackColor);`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 11)font:10pt Tahoma;`r`n"
            $HojaCSS = "$($HojaCSS)$(" " * 11)color: #$($Band2TextColor);}`r`n"
            # Cerramos la definición de estilos
            $HojaCSS = "$($HojaCSS)  </style>`r`n"
            $Parametros.Remove("CSS") | Out-Null
        }
        # si se ha recibido hoja de estilos, la utilizaremos
        Else
        {
            $HojaCSS = "  <style type=""text/css"">`r`n$CSS`r`n</style>"
        }
        # Si se debe dar formato distinto a la primera columna de la tabla, en
        # las celdas con el nombre de propiedad
        If($FirstColumn)
        {
            # Ponemos en la variable $PrimeraColumna la entrada de clase de
            # estilo que corresponde a la primera columna
            $PrimeraColumna = " class=""primera_columna"""
            # Quitamos el parámetro FirstColumn de los parámetros que se pasarán
            # a Get-WmiObject
            $Parametros.Remove("FirstColumn") | Out-Null
        }
        Else
        {
            # Dejamos en blanco la variable $PrimeraColumna para que así no
            # establezca ninguna clase de estilo en las celdas
            $PrimeraColumna = ""
        }
        # Si se ha pasado el parámetro de mostrar las filas bandeadas, lo
        # quitamos de los parámetros que se pasarán a Get-WmiObject
        If($Banded)
        {
            $Parametros.Remove("Banded") | Out-Null
        }
        # Si se ha pasado el parámetro de no mostrar la leyenda, lo
        # quitamos de los parámetros que se pasarán a Get-WmiObject
        If($DontDontShowLegend)
        {
            $Parametros.Remove("DontShowLegend") | Out-Null
        }
    }
    Process
    {
        ForEach($CLS In $Class)
        {
            # Incrementamos el contador de clases
            $Clases++
            $Parametros["Class"] = $CLS
            # Recorremos los equipos recibidos en el parámetro ComputerName
            ForEach($Equipo In $ComputerName)
            {
                # Iniciamos el HTML del fichero correspondiente a la clase actual
                # en el equipo actual
                $HTML = "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transition"
                $HTML = "$($HTML)al//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-"
                $HTML = "$($HTML)transi tional.dtd"">`r`n"
                $HTML = "$($HTML)<html>`r`n"
                $HTML = "$($HTML)<head>`r`n"
                # Ponemos el título
                $HTML = "$($HTML)  <title>Instancias de $Class en el equipo $Equipo"
                $HTML = "$($HTML)</title>`r`n"
                # Establecemos la codificación UTF-8
                $HTML = "$($HTML)  <meta http-equiv=""Content-Type"" content=""te"
                $HTML = "$($HTML)xt/html; charset=utf-8"" />`r`n"
                $HTML = "$($HTML)$($HojaCSS)"
                # Cerramos la sección HEAD
                $HTML = "$($HTML)</head>`r`n"
                # Iniciamos el cuerpo de la página HTML
                $HTML = "$($HTML)<body>`r`n"
                # Iniciamos la tabla con los resultados
                $HTML = "$($HTML)<table border=""1"">`r`n"
                # Iniciamos el contador de instancias de la clase en proceso
                $Instancias = 0
                # Ponemos en los parámetros el valor del equipo actual en
                # ComputerName
                $Parametros["ComputerName"] = "$Equipo"
                # Obtenemos las instancias de la clase actual
                Get-WmiObject @Parametros | ForEach{ `
                    # Establecemos el estilo del valor de la primera propiedad
                    $Estilo = "banda1"
                    # Incrementamos el contador de instancias de la clase actual
                    $Instancias++
                    # Ponemos en el HTML el nombre de la instancia
                    $HTML = "$($HTML)<tr><td class=""nombre_instancia"" colspan"
                    $HTML = "$($HTML)=""2"">$($_.Caption)</td></tr>`r`n"
                    # Si hay que mostrar la leyenda
                    If($DontShowLegend -eq $false)
                    {
                        # Ponemos la leyenda
                        $HTML = "$($HTML)<tr class=""leyenda""><td>Nombre de Propi"
                        $HTML = "$($HTML)edad</td><td>Valor</td></tr>`r`n"
                    }
                    # Recorremos las propiedades de la instancia
                    ForEach($Propiedad In $_.Properties)
                    {
                        # Agregamos el nombre de la propiedad al HTML
                        $HTML = "$($HTML)<tr class=""$Estilo""><td$PrimeraColumna>"
                        $HTML = "$($HTML)$($Propiedad.Name)</td>"
                        # Agregamos el valor de la propiedad al HTML; para poder
                        # separar cada elemento en una línea, en el caso de las
                        # propiedades que sean un array, hacemos Join del valor
                        $HTML = "$($HTML)<td>"
                        $HTML = `
                           "$($HTML)$([String]::Join("<br />",@($Propiedad.Value)))"
                        $HTML = "$($HTML)</td></tr>`r`n"
                        # Preparamos el estilo para la siguiente vuelta, para así
                        # obtener un listado bandeado si se ha recibido el parámetro
                        # Banded
                        If($Estilo -eq "banda1" -and $Banded)
                        {
                            $Estilo = "banda2"
                        }
                        ElseIf($Banded)
                        {
                            $Estilo = "banda1"
                        }
                    }
                }
                # Cerramos la tabla en el HTML
                $HTML = "$($HTML)</table>`r`n"
                # Mostramos por pantalla el total de instancias de la clase
                # procesada en el equipo actual
                Write-Host "Nodo: $Equipo - $Instancias Instancias de $CLS"
                # Hacemos lo mismo en el HTML
                $HTML = "$($HTML)<h3>Nodo: $Equipo - $Instancias Instancias de "
                $HTML = "$($HTML)$CLS</h3>`r`n"
                # Cerramos el cuerpo de la página HTML
                $HTML = "$($HTML)</body>`r`n"
                # Cerramos la página HTML
                $HTML = "$($HTML)</html>"
                # Obtenemos la fecha actual
                $Dia = Get-Date
                # Obtenemos la fecha en formato YYYYMMDD
                $Fecha = `
                      "$($Dia.Year)$("{0:D2}" -f $Dia.Month)$("{0:D2}" -f $Dia.Day)"
                # Incrementamos el contador de ficheros
                $Ficheros++
                # Creamos el fichero HTML con el contenido que hemos ido montando
                Out-File -InputObject $HTML `
                         -Encoding utf8 `
                         -FilePath "$Path$($Fecha)_$($Equipo)_$($CLS).html" `
                         -Force
            }
        }
    }
    End
    {
        # Mostramos un resumen final; primero cuánbtas clases WMI fueron
        # procesadas
        "Procesadas $Clases Clases WMI"
        # Como no sabemos si ComputerName es un array o no, lo encerramos entre
        # "@()", lo que lo convierte en un array y así podemos obtener la
        # propiedad Count como 1, en el caso ser una simple cadena, o como el
        # número de elemetos que tenga, en el caso de sí ser un array.
        "Procesadas en $(@($ComputerName).Count) equipos"
        # Por último, ponemos el número de ficheros que se han generado
        "Generados $Ficheros Ficheros en $Path"
    }

<#
    .SYNOPSIS
        Este Cmdlet genera un fichero HTML con la información de las instancias
de una clase WMI.

    .DESCRIPTION
        Este Cmdlet permite generar un fichero HTML con la información de las
instancias de una clase WMI. La información es presentada como una tabla en la
que la primera columna contiene los nombres de las propiedades y en la segunda
sus valores. En el caso de que los valores sean un array, se presentará en la
celda correspondiente como una cadena multilínea, mostrando un elemento del
array por línea.

El Cmdlet permite variar el formato de la tabla con los resultados en varias
maneras:
    - Pasando los colores de los elementos, tanto los de fondo (background) como
      los de texto (Text), como cadena hexadecimal, el mismo tipo de cadena que
      se pone como color en las hojas de estilo CSS (por ejemplo rojo =
      "ff0000"). Los elementos a los que se pueden variar los colores son:
          · Instancias: cada instancia tiene una línea en la tabla en la que
                        combinan las celdas de nombre de propiedad y valor para
                        poner el nombre de la instancia cuyas propiedades van a
                        continuación. Se puede especificar el color del texto y
                        el fondo.
          · Leyenda   : cada instancia puede mostrar una línea en la tabla en la
                        muestre una leyenda que indica que la columna de la
                        izquierda corresponde a los nombres de las propiedades
                        y la de la derecha a sus valores. Se puede establecer
                        el color de texto y fondo de esta leyenda, cuando se ha
                        establecido que sea mostrada.
          · 1ª Columna: la columna con los nombres de las propiedades puede
                        tener o no distinto estilo que la columna de valores. En
                        el caso de tener distinto estilo, se puede establecer el
                        color de texto y el de fondo para esta primera columna.
          · Banda1    : Se pueden definir los colores de fondo y texto para los
                        nombres de propiedad (si no se ha establecido que tengan
                        distinto estilo) y sus valores. Si la tabla no es
                        bandeada, todos los valores y, si procede, sus nombres
                        de propiedades tendrán estos colores; si la tabla es
                        bandeada, tendrán estos colores las filas impares,
                        teniendo las pares los colores de Banda 2.
          · Banda1    : si la tabla es bandeada, las filas pares tendrán estos
                        colores y las impares los de Banda 1; si la tabla no es
                        bandeada estos colores serán ignorados, teniendo sólo
                        los colores de Banda 1.
    - Pasando los colores de los elementos, tanto los de fondo (background) como
      los de texto (Text), como array de bytes, array de tres elementos y que
      conforman un color en formato RGB (por ejemplo "255,0,0" = rojo). Los
      elementos que se pueden definir así son los mismo, y con los mismos
      conceptos que vimos en el anterior punto sobre colores en formato de
      cadena hexadecimal.
    - Estableciendo si se verá o no la leyenda, que muestra que la primera
      columna es la de nombres de propiedades y la segunda la de valores.
    - Estableciendo si la primera columna, la de nombres de propiedades, tendrá
      un estilo diferente a la columna de valores; es decir, si tendran los
      nombres de las propiedades aspecto de encabezado.
    - Estableciendo si la tabla será o no bandeada, lo que hace que las filas
      impares tengan un estilo y las pares otro o que todas tengan el mismo
      estilo.
    - Estableciendo la hoja de estilos CSS completamente, de manera que se
      personalice completamente la apariencia de la tabla (colores, fuentes,
      etc.).
      
El Cmdlet admite encaminamiento, permitiendo recibir nombres de clases en el
mismo; si a esto unimos que el parámetro de equipo en el que consultar WMI es un
parámetro al que se le puede pasar un array de nombres de equipos, podemos ver
cómo en una sola línea de Powershell podemos inventariar varios equipos con
varias clases a la vez.

El Cmdlet genera, en la ruta recibida como parámetro, un fichero HTML por clase
y equipo. Esto es, si por encaminamiento ponemos 3 clases y en el parámetro de
equipos ponemos 5 nombres de equipo, el Cmdlet generará 15 ficheros HTML.

El nombre de los ficheros tendrá esta sintaxis:

YYYYMMDD_NombreEquipo_NombreClase.html

Por ejemplo:

20111126_Mortadelo-PC_Win32_BaseBoard.html

En caso de que exista el fichero, será sobreescrito.

    .PARAMETER Path
        Ruta (local o UNC) de la carpeta en la que se guardarán los ficheros
HTML. Este parámetro admite los alias "Ruta", "P", "Carpeta", "R" y "C". 

    .PARAMETER Class
        Nombre de la clase de la que obtener sus instancias. Admite
encaminamiento o un array de . Este parámetro admite los alias "Clase" y "Cls". 

Este parámetro es un array de cadenas, esto es, se puede pasar más de una clase
como sus nombres separados por comas, o incluso se puede pasar el resultado de 
Get-Content sobre un fichero de texto en el que estén los nombres de las clases
uno por línea.

    .PARAMETER Namespace
        Espacio de nombres WMI en el que estña la clase. Si es omitido el
espacio predeterminado es root\CIMv2. Este parámetro admite los alias "NS",
"EspacioNombres" y "EN". 

    .PARAMETER Filter
        Especifica una cláusula Where que se usará como filtro. Se usa la
sintaxis del lenguaje de consulta de WMI (WQL). Este parámetro admite los alias
"Filtro" y "F". 

Importante: no incluir la palabra clave WHERE en el valor del parámetro. Por
ejemplo, los comandos siguientes devuelven solo los discos lógicos donde
DeviceID es igual a 'c:' y los servicios donde el nombre es igual a 'WinRM', sin
utilizar la palabra clave Where: 

get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' " 
get-wmiobject win32_service -filter "name='WinRM'"

    .PARAMETER Authority
        Especifica la autoridad que se va a utilizar para autenticar la conexión
de WMI. Puede especificarse la autenticación estándar NTLM o Kerberos. Para
utilizar NTLM, se establece el valor de autoridad ntlmdomain:<nombreDeDominio>,
donde <nombreDeDominio> identifica un nombre de dominio NTLM válido. Para
utilizar Kerberos, se especifica kerberos:<nombreDeDominio>\<nombreDeServidor>.
No se puede incluir el valor de autoridad cuando se conecta al equipo local.

    .PARAMETER Authentication
        Especifica el nivel de autenticación que se va a utilizar con la
conexión de WMI. Los valores válidos son:

    -1: Unchanged
    0 : Default
    1 : None (no se realiza ninguna autenticación).
    2 : Connect (la autenticación se realiza solo cuando el cliente establece
        una relación con la aplicación).
    3 : Call (la autenticación se realiza solo al comienzo de cada llamada
        cuando la aplicación recibe la solicitud).
    4 : Packet (se autentican todos los datos que se reciben del cliente).
    5 : PacketIntegrity (se autentican y se comprueban todos los datos que se
        transfieren entre el cliente y la aplicación).
    6 : PacketPrivacy (se utilizan las propiedades de los demás niveles de
        autenticación y se cifran todos los datos).

    .PARAMETER ComputerName
        Especifica el equipo en el que se desea ejecutar la operación de
administración. El valor puede ser un nombre de dominio completo, un nombre
NetBIOS o una dirección IP. Se usa el nombre del equipo local, localhost, o
bien, un punto (.) para especificar el equipo local. El equipo local es el valor
predeterminado. Cuando el equipo remoto está en un dominio que no es el del
usuario, se debe usar un nombre de dominio completo.
 
Este parámetro no se basa en la comunicación remota de Windows PowerShell, que
utiliza WS-Management. Se puede usar el parámetro ComputerName de Get-WmiObject
incluso si el equipo no está configurado para la ejecución de comandos remotos
de WS-Management.

Este parámetro es un array de cadenas, esto es, se puede pasar más de un equipo
como sus nombres separados por comas, o incluso se puede pasar el resultado de 
Get-Content sobre un fichero de texto en el que estén los nombres de los equipos
uno por línea.

    .PARAMETER EnableAllPrivileges
        Habilita todos los privilegios del usuario actual antes de que el
comando realice la llamada a WMI.

    .PARAMETER Credential
        Especifica una cuenta de usuario con permiso para realizar esta acción.
El valor predeterminado es el usuario actual. Se puede escribir un nombre de
usuario, como "Usuario01", "Dominio01\Usuario01" o "Usuario@Contoso.com". O
bien,se puede escribir el nombre de un objeto PSCredential, como el objeto
devuelto por el cmdlet Get-Credential. Cuando se escribe un nombre de usuario,
se solicitará una contraseña de forma interactiva.

    .PARAMETER CSS
        Este parámetro recibe una hoja de estilo CSS completa, sin las
etiquetas de apertura y cierre de hoja de estilo (<style type="text/css"> y
</style>. Se requiere que si se van a especificar estilos personalizados y no
estilos de etiqueta (estilos para todo el body, o todos los elementos td, por
ejemplo) los estilos personalizados se llamen:

    - nombre_instancia: este es el estilo que se aplicará a la celda de
                        encabezamiento con el nombre de la instancia.
    - leyenda         : este es el estilo que se aplicará a la leyenda, donde se
                        indica que la columna de la izquierda tiene los nombres
                        de las propiedades y la de la derecha sus valores.
    - primera_columna : estilo que se aplica a la primera columna cuando se
                        presenta con diferente estilo que los valores (se pasa
                        el modificador FirstColumn).
    - banda1          : estilo que se aplica a todas las filas si no se pasó el
                        modificador Banded (incluidas las celdas de nombres de
                        propiedades si no se pasó el modificador FirstColumn).
                        Si se pasó el modificador Banded este estilo se aplica a
                        las filas impares.
    - banda2          : estilo que se aplica a todas las filas pares si se pasó
                        el modificador Banded (incluidas las celdas de nombres
                        de propiedades si no se pasó el modificador
                        FirstColumn). Si no se pasó el modificador Banded este
                        estilo se aplica a es ignorado.
                        
Un ejemplo de valor válido para este parámetro es éste (de hecho es la hoja de
estilo predeterminada del script):

               .nombre_instancia{background-color: #4bacc6;
                                 font: 10pt Tahoma;
                                 font-weight: bold;
                                 color: #ffffff}
               .leyenda{background-color: #8b3331;
                        font:8pt Tahoma ;
                        font-weight:bold;
                        color: #ffffff;}
               .primera_columna{background-color: #c0504d;
                                font: 10pt Tahoma;
                                font-weight: bold;
                                color: #ffffff;}
               .banda1{background-color: #f2dddc;
                       font:10pt Tahoma;
                       color: #000000;}
               .banda2{background-color: #e6b9b8;
                       font:10pt Tahoma;
                       color: #000000;}

    .PARAMETER DontShowLegend
        Si se pasa este modificador no se mostrará la leyenda, si se omite sí.

    .PARAMETER Banded
        Si se pasa este modificador la tabla será bandeada, en caso contrario
        no. Este parámetro admite los alias "Bandeado" y "B". 

    .PARAMETER FirstColumn
        Si se pasa este modificador la primera columna tendrá distinto estilo
        que la columna de valores, en caso contrario tendrá el mismo. Este
        parámetro admite los alias "PrimeraColumna" y "FC". 

    .PARAMETER Band1BackColor
        Color de fondo, como cadena hexadecimal (rrvvaa), de las filas impares,
si se ha pasado el modificador Banded o de todas las filas si no se pasó dicho
modificador. Este parámetro admite el alias "B1BC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER Band1TextColor
        Color de texto, como cadena hexadecimal (rrvvaa), de las filas impares,
si se ha pasado el modificador Banded o de todas las filas si no se pasó dicho
modificador. Este parámetro admite el alias "B1BC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER Band2BackColor
        Color de fondo, como cadena hexadecimal (rrvvaa), de las filas pares,
si se ha pasado el modificador Banded; si no se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "B1BC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER Band2TextColor
        Color de texto, como cadena hexadecimal (rrvvaa), de las filas pares,
si se ha pasado el modificador Banded; si no se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "B2TC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER FirstColumnBackColor
        Color de fondo, como cadena hexadecimal (rrvvaa), de la primera
columna, si se ha pasado el modificador FirstColumn; si no se pasó dicho
modificador este parámetro no tendrá efecto. Admite el alias "FCBC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER FirstColumnTextColor
        Color de texto, como cadena hexadecimal (rrvvaa), de la primera
columna, si se ha pasado el modificador FirstColumn; si no se pasó dicho
modificador este parámetro no tendrá efecto. Admite el alias "FCTC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER LegendBackColor
        Color de fondo, como cadena hexadecimal (rrvvaa), de la leyenda, si no
se ha pasado el modificador DontShowLegend; si se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "LBC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER LegendTextColor
        Color de texto, como cadena hexadecimal (rrvvaa), de la leyenda, si no
se ha pasado el modificador DontShowLegend; si se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "LTC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER InstanceBackColor
        Color de fondo, como cadena hexadecimal (rrvvaa), del nombre de la
instancia. Este parámetro admite el alias "IBC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER InstanceTextColor
        Color de texto, como cadena hexadecimal (rrvvaa), del nombre de la
instancia. Este parámetro admite el alias "ITC". 

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbBand1BackColor
        Color de fondo, como array decimal (R,V,A), de las filas impares, si se
ha pasado el modificador Banded o de todas las filas si no se pasó dicho
modificador. Este parámetro admite el alias "RB1BC".

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbBand1TextColor
        Color de texto, como array decimal (R,V,A), de las filas impares, si se
ha pasado el modificador Banded o de todas las filas si no se pasó dicho
modificador. Este parámetro admite el alias "RB1TC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbBand2BackColor
        Color de fondo, como array decimal (R,V,A), de las filas pares, si se ha
pasado el modificador Banded; si no se pasó dicho modificador este parámetro no
tendrá efecto. Admite el alias "RB2BC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbBand2TextColor
        Color de texto, como array decimal (R,V,A), de las filas pares, si se ha
pasado el modificador Banded; si no se pasó dicho modificador este parámetro no
tendrá efecto. Admite el alias "RB2TC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbFirstColumnBackColor
        Color de fondo, como array decimal (R,V,A), de la primera columna, si se
ha pasado el modificador FirstColumn; si no se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "RFCBC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbFirstColumnTextColor
        Color de texto, como array decimal (R,V,A), de la primera columna, si se
ha pasado el modificador FirstColumn; si no se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "RFCTC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbLegendBackColor
        Color de fondo, como array decimal (R,V,A), de la leyenda, si no se ha
pasado el modificador DontShowLegend; si se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "RLBC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbLegendTextColor
        Color de texto, como array decimal (R,V,A), de la leyenda, si no se ha
pasado el modificador DontShowLegend; si se pasó dicho modificador este
parámetro no tendrá efecto. Admite el alias "RLTC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbInstanceBackColor
        Color de fondo, como array decimal (R,V,A), del nombre de la instancia.
Este parámetro admite el alias "RIBC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .PARAMETER RgbInstanceTextColor
        Color de texto, como array decimal (R,V,A), del nombre de la instancia.
Este parámetro admite el alias "RITC". 

El array puede ser pasado con tres elementos (a la izquierda el rojo, en el
centro el verde y a la derecha el azul) o se pueden pasar dos elementos (rojo y
verde) o uno solo (rojo) en cuyo caso los elementos omitidos serán considerados
con valor cero. Si se pasan más de tres elementos, los elementos por encima del
tercero serán ignorados. El valor de los elementos estará comprendido entre
0 y 255.

Si se pasa el parámetro CSS se ignorará este parámetro de color.

    .EXAMPLE
    PS C:\> Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard
Genera un fichero HTML con información sobre la placa base del equipo local y lo
guarda en la carpeta de red \\bacteriosrv\inventario.

    .EXAMPLE
    PS C:\> Out-Wmi2HTML -Path \\bacteriosrv\inventario `
    >> -Class Win32_BaseBoard,Win32_OperatingSystem
Genera un fichero HTML con información sobre la placa base y otro con
información sobre el sistema operativo del equipo local y lo guarda en la
carpeta de red \\bacteriosrv\inventario.

    .EXAMPLE
    PS C:\> "Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C \\bacteriosrv\inventario -Cls Win32_BaseBoard

Genera dos ficheros HTML con información sobre los productos instalados con
Windows Installer y los procesos en ejecución y los guarda en la carpeta de red
\\bacteriosrv\inventario.

    .EXAMPLE
    PS C:\> "Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario -Cls Win32_BaseBoard `
    >> -ComputerName mortadelo-pc,filemon-pc,ofelia-pc

Genera dos ficheros HTML con información sobre los productos instalados con
Windows Installer y los procesos en ejecución, por cada uno de los equipos
mortadelo-pc, filemon-pc y ofelia-pc (en total 6 ficheros HTML), y los guarda en
la carpeta de local d:\inventario.

    .EXAMPLE
    PS C:\> "Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario `
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn

Genera dos ficheros HTML con información sobre los productos instalados con
Windows Installer y los procesos en ejecución, por cada uno de los equipos que
están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
[2 * equipos] ficheros HTML), y los guarda en la carpeta local d:\inventario.
Las tablas resultantes estarán bandeadas y con la primera columna puesta como
encabezado.

    .EXAMPLE
    PS C:\> Out-Wmi2HTML -C d:\inventario `
    >> -Class (Get-Content d:\Listados\Clases.txt)`
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn

Genera tantos ficheros HTML como nombres de clases, uno por línea, estén
contenidos en el fichero d:\Listados\Clases.txt, por cada uno de los equipos que
están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
[nclases * nequipos] ficheros HTML), y los guarda en la carpeta local
d:\inventario. Las tablas resultantes estarán bandeadas y con la primera columna
puesta como encabezado.

    .EXAMPLE
    PS C:\> "Win32_Product","Win32_Process" | `
    >> Out-Wmi2HTML -C d:\inventario -DontShowLegend `
    >> -ComputerName (Get-Content d:\Listados\Equipos.txt) -Banded -FirstColumn

Genera dos ficheros HTML con información sobre los productos instalados con
Windows Installer y los procesos en ejecución, por cada uno de los equipos que
están listados, uno por línea, en el fichero d:\Listados\Equipos.txt (en total
[2 * equipos] ficheros HTML), y los guarda en la carpeta local d:\inventario.
Las tablas resultantes estarán bandeadas y con la primera columna puesta como
encabezado, siendo omitida la leyenda.

    .EXAMPLE
    PS C:\> $CSS = @"
>> .nombre_instancia{background-color: #4bacc6;
>>                  font: 10pt Tahoma;
>>                  font-weight: bold;
>>                  color: #ffffff}
>> .leyenda{background-color: #8b3331;
>>         font:8pt Tahoma ;
>>         font-weight:bold;
>>         color: #ffffff;}
>> .primera_columna{background-color: #c0504d;
>>                 font: 10pt Tahoma;
>>                 font-weight: bold;
>>                 color: #ffffff;}
>> .banda1{background-color: #f2dddc;
>>        font:10pt Tahoma;
>>        color: #000000;}
>> .banda2{background-color: #e6b9b8;
>>        font:10pt Tahoma;
>>        color: #000000;}
>> "@
>> 
PS C:\> Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard `
                     -CSS $CSS

Genera un fichero HTML con información sobre la placa base del equipo local y lo
guarda en la carpeta de red \\bacteriosrv\inventario. El fichero tendrá como
hoja de estilo CSS la pasada como variable $CSS en el parámetro CSS.
    
    .EXAMPLE
    PS C:\> Out-Wmi2HTML -Path \\bacteriosrv\inventario -Class Win32_BaseBoard `
                         -Band1BackColor "af0000" `
                         -RgbBand2BackColor 200,255,190 `
                         -RgbInstanceBackColor 180,210 `
                         -RgbLegendBackColor 180 `
                         -LegendTextColor "ffffff" `
                         -Banded

Genera un fichero HTML con información sobre la placa base del equipo local y lo
guarda en la carpeta de red \\bacteriosrv\inventario. La tabla estará bandeada
y con leyenda. El fichero tiene personalizados los colores de:

            - Fondo de bandas impares (verde amarillento claro).
            - Fondo de bandas pares (verde claro).
            - Fondo de nombre de instancia (verde caqui medio; 180,210 es lo
              mismo que 180,210,0).
            - Fondo de leyenda (rojo medio; 180 es lo mismo que 180,0,0).
            - Texto de leyenda (blanco).

    .INPUTS
    System.String, System.String[], System.Byte[]
    
    .OUTPUTS
    System.String
    
    .NOTES
        Fernando Reyes López © 11/2011

    .LINK
        http://freyes.svetlian.com

    .LINK
        https://urpiano.wordpress.com
#>

}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s