1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| 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"
.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
} |
Partager