#1 10 Mar 2012 19:56

jumper
Member
From: tunisia, Mornaguia
Registered: 17 Apr 2009
Posts: 55
Website

discover wmi with Get-WMIHelp function

function Get-WMIHelp {  
  <#
.SYNOPSIS

  Affiche des informations sur les classes et propriétés WMI

.DESCRIPTION

  Affiche des informations sur les classes et propriétés WMI

.PARAMETER InputObject

Spécifie un objets <ManagementClass> représentant l'objet à récupérer. Entrez une variable contenant l'objets, ou tapez une commande ou une expression permettant d'obtenir cet objet. Vous pouvez également diriger un objet
 <ManagementClass> vers Get-WMIHelp. 
 
 .PARAMETER Class
 Spécifie le nom d'une classe WMI
 
.PARAMETER Path
 
 Spécifie le chemin d'accès de l'emplacement où le fichier de sortie éléments doit être copiés.

.EXAMPLE

PS C:\> Get-WmiObject -List win32_Bios | Get-WMIHelp

Cette commande obtient toutes les données disponibles sur les paramètres de la classe WMI 'win32_Bios'


.EXAMPLE

PS C:\> Get-WMIHelp -InputObject ([WMIClass]'win32_process')

.EXAMPLE

PS C:\> $WMI = Get-WmiObject -List win32_share
PS C:\> Get-WMIHelp -InputObject $WMI -Path Z:\shareinfo.htm

 La première commande obtient les méta données de la classe WMI 'win32_share', puis elle les stocke dans la variable $WMI.
 La deuxième commande utilise le paramètre InputObject pour passer l'objet <ManagementClass> qui est stocké dans la variable $WMI à la fonction Get-WMIHelp. 
 Le paramètre 'Path' permet de spécifier un chemin pour stocké notre fichier "htm"


.EXAMPLE

PS C:\> Get-WMIHelp -Class "win32_OperatingSystem" -path c:\os.htm

 
.LINK
about_WMI_Cmdlets
Get-WmiObject

.INPUTS
System.Management.ManagementClass

.NOTES

   Author: Walid Toumi
   Blog: http://walidtoumi.blogspot.com
   Date: 2/28/2012
   Keywords: WMI - Get-WmiObject - Help
#>
  [CmdletBinding(DefaultParameterSetName='InputObject')]
  param(
   [Parameter(
     ValueFromPipeLine=$True,
     Mandatory=$True,
     Position=0,
     ParameterSetName='InputObject')]
   [ValidateNotNullOrEmpty()]
   [System.Management.ManagementClass]
   ${InputObject},
   [Parameter(Position=0,ParameterSetName='class')]
   ${Class},
   [System.String]
   ${Path})
 
  Try{ 
       switch ($PSCmdlet.ParameterSetName) {
        "Class" {
           $null=Get-WmiObject -Class $Class -ea 'stop'
           $IS_WMI_CLASS = $Class
         }
        "InputObject" {
              $IS_WMI_CLASS = $InputObject.__CLASS
         }
       }
       $WMIClass = Get-WmiObject -List $IS_WMI_CLASS -Amended
       $Desc = $WMIClass.Qualifiers['Description']
       $WMIProperties = $WMIClass.PSbase.Properties
       $Head=@"
     <style type="text/css">
        body {
           font-family:Arial, Helvetica, sans-serif;
           font-size:14px;
           background:#d7dbe2;
        }
        table {
           background:#f6f6f6;
        }
        th {
           background: #404853;
           color: #fff;
        }
        tbody tr:nth-child(even) td {
           background: #e8eae9;
        }       
  </style>
"@
     $Body = @"
    <h1>WMI CLASS</h1><p>$($WMIClass.__Class)</p>
   <h1>WMI CLASS DESCRIPTION</H1><p>$($Desc.Value)</p><h1>PARAMETERS</h1> 
"@
    $WMIHelp = $WMIProperties | ForEach-Object {
       $desc = $($WMIClass.psbase.Properties["$($_.Name)"]).Qualifiers['Description']
       New-Object PSObject -Property @{ 
          Description = $desc.value
          Type = $_.Type
          Name = $_.Name
       }
    } <# end foreach #> | ConvertTo-Html -Property name,Type,description -Head $Head -Body $Body
}  
catch { 
   Write-Error $_
  }
 finally {
   $WMIHelp > $env:TEMP\wmihelp.htm
   if($Path) {
     Try{
          Move-Item $env:TEMP\wmihelp.htm $Path -ea 'stop'
        }
     catch {
          Write-Error $_
        }    
  } # end if
  else {
      Invoke-Item -Path $env:TEMP\wmihelp.htm
  } # end else 
 } # end finally
}

Offline

Board footer

Powered by FluxBB