# encoding: ascii
# api: powershell
# title: WMI Explorer
# description: Added “lazy” filter – Ctrl+F (just input one char at a time) and query tool (experimental feature)/See screenshots for the details http://savepic.org/4767656.jpg and http://savepic.org/4755368.jpg
# version: 2.05
# type: function
# author: greg zakharov
# license: CC0
# function: Get-UserStatus
# x-poshcode-id: 4653
# x-archived: 2013-12-08T08:23:41
# x-published: 2013-11-28T11:41:00
#
#
#requires -version 2.0
function Get-UserStatus {
$script:usr = [Security.Principal.WindowsIdentity]::GetCurrent()
return (New-Object Security.Principal.WindowsPrincipal $usr).IsInRole(
[Security.Principal.WindowsBuiltInRole]::Administrator
)
}
function Get-ImageFromString($img) {
[Drawing.Image]::FromStream((New-Object IO.MemoryStream(
($$ = [Convert]::FromBase64String($img)), 0, $$.Length))
)
}
function Get-NameSpaces([String]$root) {
(New-Object Management.ManagementClass(
$root, [Management.ManagementPath]'__NAMESPACE', $null
)
).PSBase.GetInstances() | % {
return (New-Object Windows.Forms.TreeNode).Nodes.Add($_.Name)
}
}
function Get-SubNameSpaces([Windows.Forms.TreeNode[]]$nodes) {
foreach ($nod in $nodes) {
Get-NameSpaces ('root\' + $nod.FullPath) | % {$nod.Nodes.Add($_)}
}
}
function Get-FilteredClasses([String]$root, [String]$mask) {
if ([String]::IsNullOrEmpty($tsWCard.Text)) {$mask = '*'}
(New-Object Management.ManagementClass($root, $obj)
).PSBase.GetSubclasses($enm) | % {
if ($_.Name -like $mask) {
$itm = $lvList1.Items.Add($_.Name, 1)
try {$itm.SubItems.Add($_.PSBase.Qualifiers.Item("Description").Value)}
catch{$itm.SubItems.Add("<Not described>")}
}
}
if ($lvList1.Items.Count -ne 0) {
$lvList1.AutoResizeColumns([Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)
Out-ClassesNumber
}
}
function Select-AllItems {
$lvList1.Items.Clear()
Reset-AllMessages
if ($tvRoots.SelectedNode) {
$script:cur = 'root\' + $tvRoots.SelectedNode.FullPath
Get-FilteredClasses $cur ($tsWCard.Text + '*')
$frmMain.Text = $cur + ' - WMI Explorer'
}
}
function Reset-AllMessages {
$lvList2, $lvList3, $lvList4 | % {$_.Items.Clear()}
$rtbData.Clear()
$sbLbl_2, $sbLbl_3, $sbLbl_4 | % {$_.Text = [String]::Empty}
}
function Out-ClassesNumber {
$sbLbl_1.Text = "Classes: " + $lvList1.Items.Count.ToString()
}
function Select-FilledTab {
if (-not [String]::IsNullOrEmpty($rtbData.Text)) {
$tabCtrl.SelectedTab = $tpPage3
}
else {
if ($lvList3.Items.Count -eq 0 -and $lvList4.Items.Count -ne 0) {
$tabCtrl.SelectedTab = $tpPage2
}
else {
$tabCtrl.SelectedTab = $tpPage1
}
}
}
function Get-WmiItems($e) {
foreach ($prop in $e.PSBase.Properties) {
$rtbData.SelectionFont = $bold
$rtbData.AppendText($prop.Name + ": ")
$rtbData.SelectionFont = $norm
if ($prop.Value -eq $null) {
$rtbData.AppendText("`n")
}
elseif ($prop.IsArray) {
$ofs = ";"
$rtbData.AppendText("$($prop.Value)")
$ofs = $null
$rtbData.AppendText("`n")
}
else {
$rtbData.AppendText("$($prop.Value)`n")
}
}
$rtbData.AppendText("`n$('=' * 100)`n")
Select-FilledTab
}
function Reset-TopMessages {
$lvList1.Items.Clear()
$sbLbl_1.Text = "Query Mode"
$frmMain.Text = "WMI Explorer"
$tabCtrl.SelectedTab = $tpPage3
Reset-AllMessages
}
$mnuPane_Click= {
$toggle =! $mnuPane.Checked
$mnuPane.Checked = $toggle
$scSplt1.Panel2Collapsed =! $toggle
}
$mnuMore_Click= {
$toggle =! $mnuMore.Checked
$mnuMore.Checked = $toggle
$tsStrip.Visible = $toggle
}
$mnuSBar_Click= {
$toggle =! $mnuSBar.Checked
$mnuSbar.Checked = $toggle
$sbStrip.Visible = $toggle
}
$tsWCard_TextChanged= {
if (Get-UserStatus) {
Reset-AllMessages
switch ([String]::IsNullOrEmpty($tsWCard.Text)) {
$true {Select-AllItems}
default {
if ($lvList1.Items.Count -ne 0) {
$lvList1.Items | % {if ($_.Text -notlike ($tsWCard.Text + '*')) {$_.Remove()}}
Out-ClassesNumber
}
}
}
$sbLbl_2, $sbLbl_3 | % {$_.Text = [String]::Empty}
}
}
$tsQuery_GotFocus= {
Reset-TopMessages
$tsWCard.Text = [String]::Empty
$lvList1, $lvList2 | % {
$_.AutoResizeColumns([Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)
}
}
$tsQTest_Click= {
Reset-TopMessages
try {
if (-not [String]::IsNullOrEmpty($tsQuery.Text)) {
([wmisearcher]$tsQuery.Text).Get() | % {
Get-WmiItems $_
}
}
}
catch {}
}
$tvRoots_AfterSelect= {
$tabCtrl.SelectedTab = $tpPage1
Select-AllItems
}
$lvList1_Click= {
$ErrorActionPreference = 0
Reset-AllMessages
for ($i = 0; $i -lt $lvList1.Items.Count; $i++) {
if ($lvList1.Items[$i].Selected) {
$path = $cur + ":" + $lvList1.Items[$i].Text
$wmi = (New-Object Management.ManagementClass($path, $obj)).PSBase
}
}
$wmi.Methods | % {
$itm = $lvList2.Items.Add($_.Name, 2)
$itm.SubItems.Add($_.Origin)
$itm.SubItems.Add([String]::Empty)
$itm.SubItems.Add([String]::Empty)
$itm.SubItems.Add([String]::Empty)
try {
$itm.SubItems.Add($_.PSBase.Qualifiers["Description"].Value)
}
catch {
$itm.SubItems.Add([String]::Empty)
}
}
$wmi.Properties | % {
$itm = $lvList2.Items.Add($_.Name, 3)
$itm.SubItems.Add([String]::Empty)
$itm.SubItems.Add($_.Type.ToString())
$itm.SubItems.Add($_.IsLocal.ToString())
$itm.SubItems.Add($_.IsArray.ToString())
try {
$itm.SubItems.Add($_.PSBase.Qualifiers["Description"].Value)
}
catch {
$itm.SubItems.Add([String]::Empty)
}
}
$wmi.Derivation | % {$lvList3.Items.Add($_, 1)}
$wmi.Qualifiers | % {
$itm = $lvList4.Items.Add($_.Name, 4)
$itm.SubItems.Add($_.Value.ToString())
$itm.SubItems.Add($_.IsAmended.ToString())
$itm.SubItems.Add($_.IsLocal.ToString())
$itm.SubItems.Add($_.IsOverridable.ToString())
$itm.SubItems.Add($_.PropagatesToInstance.ToString())
$itm.SubItems.Add($_.PropagatesToSubclass.ToString())
}
$ins = $wmi.GetInstances()
if ($ins.Count -ne 0) {
$ins | % {
Get-WmiItems $_
}
}
else {Select-FilledTab}
$lvList2.AutoResizeColumns([Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)
if ($lvList3.Items.Count -ne 0) {
$lvList3.AutoResizeColumns([Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)
}
$sbLbl_2.Text = "Methods: " + $wmi.Methods.Count.ToString()
$sbLbl_3.Text = "Properties: " + $wmi.Properties.Count.ToString()
$sbLbl_4.Text = "Instances: " + $(switch($ins.Count -eq $null){$true{'0'}default{$ins.Count.ToString()}})
$frmMain.Text = $path + ' - WMI Explorer'
}
$frmMain_Load= {
if (Get-UserStatus) {
Get-NameSpaces 'root' | % {$tvRoots.Nodes.Add($_)}
Get-SubNameSpaces $tvRoots.Nodes
$obj = New-Object Management.ObjectGetOptions
$enm = New-Object Management.EnumerationOptions
#both "True"
$obj.UseAmendedQualifiers = $true
$enm.EnumerateDeep = $true
$sbLbl_1.Text = "Ready"
}
else {
$sbLbl_1.Font = $bold
$sbLbl_1.ForeColor = "Crimson"
$sbLbl_1.Text = $usr.Name + " is not admin."
}
}
function frmMain_Show {
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[Windows.Forms.Application]::EnableVisualStyles()
#
#fonts
#
$bold = New-Object Drawing.Font("Microsoft Sans Serif", 9, [Drawing.FontStyle]::Bold)
$norm = New-Object Drawing.Font("Microsoft Sans Serif", 9, [Drawing.FontStyle]::Regular)
#
#resources
#
$ico = [Drawing.Icon]::ExtractAssociatedIcon(($PSHome + '\powershell.exe'))
#
#namespace picture
#
$img1 = "Qk1mAgAAAAAAADYAAAAoAAAADQAAAA4AAAABABgAAAAAADACAAAAAAAAAAAAAAAAAAAAAAAA//////" + `
"//////////////////////////////////////////////AP///////////wAAAAAAAAAAAP///wAA" + `
"AAAAAAAAAP///////////wD///////8AAAAAAAD///////////////////8AAAAAAAD///////8A//" + `
"//////AAAAAAAA////////////////////AAAAAAAA////////AP///////wAAAAAAAP//////////" + `
"/////////wAAAAAAAP///////wD///////8AAAAAAAD///////////////////8AAAAAAAD///////" + `
"8A////////AAAAAAAA////////////////////AAAAAAAA////////AAAAAAAAAAAAAP//////////" + `
"/////////////////wAAAAAAAAAAAAD///////8AAAAAAAD///////////////////8AAAAAAAD///" + `
"////8A////////AAAAAAAA////////////////////AAAAAAAA////////AP///////wAAAAAAAP//" + `
"/////////////////wAAAAAAAP///////wD///////8AAAAAAAD///////////////////8AAAAAAA" + `
"D///////8A////////////AAAAAAAAAAAA////AAAAAAAAAAAA////////////AP//////////////" + `
"/////////////////////////////////////wA="
#
#class picture
#
$img2 = "Qk02BQAAAAAAADYEAAAoAAAAEAAAABAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAA////AN" + `
"ju9gDYm1sA+O7jAMS3rQAUquEA/ez9ANrv9gDTZdIA2+/3AJeAbwCZMwAADGKBAI0tjAAOeJ4A/fD9" + `
"AP/NmQD97f0A+q36ANxw2wAXmMgAbNbzAPuY+gCF4fUAUMvxAFDL8gA0wO8A997iAOm0fAC1YzUA+v" + `
"TtABy17QDZbNgAa9f0AB217gA1wPAAHbXtALM8sgCF4PUAhuH0APnw5wD68uoAT8vxABy27gBr1vQA" + `
"yXNDAIbh9QAvvu8ANMDwAPnx6QD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMjIyMjIyMjIAAwAyMjIyMjIyMjIyMjIAMQsDADIyMj" + `
"IyMjIyMjIyHh0CCwMAMjIyMjIyMjIECgIQHAILAwAyMjIyMjIyBDIDAhAcAgsDMjIyADIyMgQyMgMC" + `
"EC0oADIyAAcAMjIEMjIyGwIpADIyAAcOBwAyBDIyBg0bADIyAAcOKw4HAAQyBiUTDREAMgEOKhovDA" + `
"oKCiASFhMNEQAFFyEYMCIMATIGCBIWEw0RAQUuFRkjHwwBMgYIEggGAAAJBSYVGRokDAEADwgPADIy" + `
"AAkFJywYFAEAMgAPADIyMjIACQUXFAEAMjIyADIyMjIyMgAJBQEAMjIyMjIyMjI="
#
#method picture
#
$img3 = "Qk3mBAAAAAAAADYEAAAoAAAAEAAAAAsAAAABAAgAAAAAALAAAAAAAAAAAAAAAAABAAAAAQAA0GnPAK" + `
"61rADw1fAAq/D3APuY+gDvpe4ArNXVALxvuwDy2/IAfi5+AKlQqACePJ4Aq+XpAPPg8gD7q/oAfS18" + `
"APuZ+gDVb9UAl1KWAN6Y3QDUbtMA+5v6AOzS7ACtu7UAjjWNAK6kmADkyuQA4q/iAOyR6wCqUqkAci" + `
"RxAO3Y7QDuvu4A+5/6AKzOzAD05vQAj0aOAJFOkADr0esArpmKANJt0QCWOJUA8OPwAO+d7gDz4/MA" + `
"qE+nAPuu+gCr4uUAp1CmAOjR6AB7K3oA55jmAK6nnADmzOYA46zjAKzEwQDqkOkAgDB/AKpQqQB/MH" + `
"4AfC58AHUndQDPiM8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/Pz8/Pz8/Pz8/Fh41Pz8/Pz8/Pz8/Pz8/Hwo5PSY/Pz" + `
"8/Pz8/Pz8/MToACSkyAj8/Ay8iFzQ/GgooFDsLGA8/Pz8/Pz8/Px0AEQcTJAsJPwMMBjcBGT8tKAcF" + `
"ISsSPD8/Pz8/Pz8/MAcFFQQQMyU/Pz8DBgEnPz4bDgQEOD4jPz8/Pz8/Pz8CPiAuHD4NPz8/Pz8/Pz" + `
"8/Pwg+Nj4sPz8/Pz8/Pz8/Pz8/CD4qPz8/"
#
#property picture
#
$img4 = "Qk02BQAAAAAAADYEAAAoAAAAEAAAABAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAxK+iAP" + `
"///wD7/f8AVE5GAN+dfQBu6/8Aj6SsAP//9gBo7f8AVE9NAPzw6ADRyMEA0sjBAEphcABST0sAS2Fw" + `
"AP///gACIS4AUk9MAHLh+QAVJzMAQaxTAFdNWQD+/v0Aeo+ZAOfr7QB6zeIA//nsADKy3wAVk8QAKZ" + `
"c/ANnPyABhwd4AMDpPAP/l1gDCyNAA+OLSAKOsuABZeFsA+/TvAHx1cwCnkokAMp5BADG76gBdXGAA" + `
"adv2AFOElQBXa4AAwsrOAH/j+QDf5OUA/d7LAP328gDRx8AAUmBnANq6qgC/yM0A/8WkAEBmUQCTtp" + `
"kAhcyFAP/w4QCa06QAEajsAGrd9wD/6tIAGIwyAP77+ACAl6MAXnWEAAsQGwBccYAAHGYpAP/p3ABp" + `
"nIkALqnWAPvu5gD/7eMAW21/AFjS8wCBprUAU1BMAIPh9gCknZYA/+LQACK6+gCw6/oAEAcKAP36+A" + `
"BBPVAAT1ZlAEvH7QBYmK4AcMF9APHKtwD/6tUAcuL6AP7+/ABfoqYA//78ABRijgBRTksA+uneALCt" + `
"rAD/+/kAQVxyANPJwgBWz/IAVL3cANTZ3QBOS0sAgJagAFCQjABAw+0AZ9f0AOXJuQBRcosAlbjEAO" + `
"PZ0wBzhZMA4unpAIbT5QAdmcgAVlFNAB/Q/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH19fX19fX19fX19fX19fX0obgkJCXtRDhIOZQN9fX19Hw" + `
"ECAgcHBxs9X0EDfX19fQwBAABoAAAAAAAzA319fX0MAQICY1gnTGYkVAN9fX19agEAABAAAAAAACID" + `
"fX19fTUBAgIBF0M0CgpJA319fX0LAQICAQFhZ2l2TQN9fX19CwF4RTIBMA1LRixTfX07SAReBnkPKQ" + `
"0gFnwUVxFaJkIEOXMGUg8aNghZHHodZDoeBAQENwYxLgghLU9xKz9wKn19fX0ZLwhcBRNAa1tVYhV9" + `
"fX19I1ZOBQUFYHJsdEo8fX19fSV1bVBEbxh3Rzg+XX19fX19fX19fX19fX19fX0="
#
#qualifier picture
#
$img5 = "Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAA4evr//" + `
"//////////////////////////////////////////////////AACZqKyZqKyZqKyZqKyZqKyZqKyZ" + `
"qKyZqKyZqKyZqKyZqKyZqKyZqKz///8AAJmorP///+Ts7eTs7eTs7eTs7eTs7eTs7eTs7OTs7OTs7O" + `
"Ps7JmorP///wAAmais////5+7u5+7v5+7v5+7v////////////////5+7u5u7umais////AACZqKz/" + `
"///n7u7n7u/n7u+ZqKyZqKyZqKyZqKzn7u7n7u7m7u6ZqKz///8AAJmorP///+rw7+rw7////5morP" + `
"///////////////+rw7+rv75morP///wAAmais////6vDvmaismaismaismaismaismais6vDv6vDv" + `
"6u/vmais////AACZqKz////s8fCZqKz////////////////////////s8fHs8fGZqKz///8AAJmorP" + `
"///+zx8JmorJmorJmorJmorJmorJmorOzx8ezx8ezx8ZmorP///wAAmais////7/Lwmais////7/Lx" + `
"////////////////7vLx7/Lwmais////AACZqKz////v8vCZqKz///+ZqKyZqKyZqKyZqKzu8vHu8v" + `
"Hv8vCZqKz///8AAJmorP////Dz8ZmorP///5morP////////////////Dz8f///5morP///wAAmais" + `
"////8PPxmaismaismaismaismaismais8PPxmaismaismais7/PxAACZqKz////09PL19PP19PP19P" + `
"P09PP09PP09PP09POZqKyZqKz08/P08/MAAJmorP///////////////////////////////////5mo" + `
"rPTz8/Tz8/Tz8wAAmaismaismaismaismaismaismaismaismaismais9PTy9PTz9PTz9PTzAAA="
#
#tools strip button
#
$img6 = "Qk32AgAAAAAAADYAAAAoAAAADgAAABAAAAABABgAAAAAAMACAAAAAAAAAAAAAAAAAAAAAAAA//////" + `
"//////////////////////////////////////////////////AAD/////////////////////////" + `
"//////////////////////////////8AAP///////////////////////wAAAAAAAP////////////" + `
"///////////wAA////////////////////////AAAAAAAA////////////////////////AAD/////" + `
"//////////////////////////////////////////////////8AAP///////////////////////w" + `
"AAAAAAAP///////////////////////wAA////////////////////////aGhoAAAAsrKy////////" + `
"////////////AAD////////////////////////Z2dkAAAAAAACnp6f///////////////8AAP////" + `
"///////////////////////9nZ2U1NTQAAALKysv///////////wAA////////////////////////" + `
"////////8PDwAAAAAAAA////////////AAD///////////9NTU0AAADHx8f////////Hx8cAAABNTU" + `
"3///////////8AAP///////////9DQ0AAAAAAAAAAAAAAAAAAAAAAAANDQ0P///////////wAA////" + `
"////////////2dnZfHx8AAAAAAAAfHx82dnZ////////////////AAD///////////////////////" + `
"////////////////////////////////8AAP//////////////////////////////////////////" + `
"/////////////wAA////////////////////////////////////////////////////////AAA="
#
#form objects
#
$frmMain = New-Object Windows.Forms.Form
$mnuMain = New-Object Windows.Forms.MenuStrip
$mnuFile = New-Object Windows.Forms.ToolStripMenuItem
$mnuExit = New-Object Windows.Forms.ToolStripMenuItem
$mnuView = New-Object Windows.Forms.ToolStripMenuItem
$mnuTool = New-Object Windows.Forms.ToolStripMenuItem
$mnuPane = New-Object Windows.Forms.ToolStripMenuItem
$mnuMore = New-Object Windows.Forms.ToolStripMenuItem
$mnuSBar = New-Object Windows.Forms.ToolStripMenuItem
$mnuHelp = New-Object Windows.Forms.ToolStripMenuItem
$mnuInfo = New-Object Windows.Forms.ToolStripMenuItem
$tsStrip = New-Object Windows.Forms.ToolStrip
$tsLbl_1 = New-Object Windows.Forms.ToolStripLabel
$tsLbl_2 = New-Object Windows.Forms.ToolStripLabel
$tsWCard = New-Object Windows.Forms.ToolStripTextBox
$tsQuery = New-Object Windows.Forms.ToolStripTextBox
$tsQTest = New-Object Windows.Forms.ToolStripButton
$tsDelim = New-Object Windows.Forms.ToolStripSeparator
$scSplt1 = New-Object Windows.Forms.SplitContainer
$scSplt2 = New-Object Windows.Forms.SplitContainer
$scSplt3 = New-Object Windows.Forms.SplitContainer
$tvRoots = New-Object Windows.Forms.TreeView
$tabCtrl = New-Object Windows.Forms.TabControl
$tpPage1 = New-Object Windows.Forms.TabPage
$tpPage2 = New-Object Windows.Forms.TabPage
$tpPage3 = New-Object Windows.Forms.TabPage
$lvList1 = New-Object Windows.Forms.ListView
$lvList2 = New-Object Windows.Forms.ListView
$lvList3 = New-Object Windows.Forms.ListView
$lvList4 = New-Object Windows.Forms.ListView
$chCol_1 = New-Object Windows.Forms.ColumnHeader
$chCol_2 = New-Object Windows.Forms.ColumnHeader
$chCol_3 = New-Object Windows.Forms.ColumnHeader
$chCol_4 = New-Object Windows.Forms.ColumnHeader
$chCol_5 = New-Object Windows.Forms.ColumnHeader
$chCol_6 = New-Object Windows.Forms.ColumnHeader
$chCol_7 = New-Object Windows.Forms.ColumnHeader
$chCol_8 = New-Object Windows.Forms.ColumnHeader
$chCol_9 = New-Object Windows.Forms.ColumnHeader
$chCol10 = New-Object Windows.Forms.ColumnHeader
$chCol11 = New-Object Windows.Forms.ColumnHeader
$chCol12 = New-Object Windows.Forms.ColumnHeader
$chCol13 = New-Object Windows.Forms.ColumnHeader
$chCol14 = New-Object Windows.Forms.ColumnHeader
$chCol15 = New-Object Windows.Forms.ColumnHeader
$chCol16 = New-Object Windows.Forms.ColumnHeader
$rtbData = New-Object Windows.Forms.RichTextBox
$imgList = New-Object Windows.Forms.ImageList
$sbStrip = New-Object Windows.Forms.StatusStrip
$sbLbl_1 = New-Object Windows.Forms.ToolStripStatusLabel
$sbLbl_2 = New-Object Windows.Forms.ToolStripStatusLabel
$sbLbl_3 = New-Object Windows.Forms.ToolStripStatusLabel
$sbLbl_4 = New-Object Windows.Forms.ToolStripStatusLabel
#
#common properties
#
$mnuMain.Items.AddRange(@($mnuFile, $mnuView, $mnuHelp))
$tsLbl_1.Text = "Filter:"
$tslbl_2.Text = "Query:"
$tsQuery.Size = New-Object Drawing.Size(247, 23)
$scSplt1, $scSplt2, $scSplt3, $tvRoots, $tabCtrl, $lvList1, $lvList2, $lvList3, $lvList4, $rtbData | % {
$_.Dock = "Fill"
}
$scSplt1, $scSplt2, $scSplt3 | % {$_.SplitterWidth = 1}
$scSplt1, $scSplt3 | % {$_.Orientation = "Horizontal"}
$lvList1, $lvList2, $lvList3, $lvList4 | % {
$_.FullRowSelect = $true
$_.MultiSelect = $false
$_.ShowItemToolTips = $true
$_.SmallImageList = $imgList
$_.Sorting = "Ascending"
$_.View = "Details"
}
$lvList1.Columns.AddRange(@($chCol_1, $chCol_2))
$lvList2.Columns.AddRange(@($chCol_3, $chCol_4, $chCol_5, $chCol_6, $chCol_7, $chCol_8))
$lvList3.Columns.AddRange(@($chCol_9))
$lvList4.Columns.AddRange(@($chCol10, $chCol11, $chCol12, $chCol13, $chCol14, $chCol15, $chCol16))
$lvList1.Add_Click($lvList1_Click)
$lvList2.AllowColumnReorder = $true
$chCol_1, $chCol_9 | % {$_.Text = "Class"}
$chCol_2, $chCol_8 | % {$_.Text = "Description"}
$chCol_3, $chCol10 | % {$_.Text = "Name"}
$chCol_6, $chCol13 | % {$_.Text = "IsLocal"}
$chCol_1, $chCol_2, $chCol_9, $chCol11, $chCol15, $chCol16 | % {$_.Width = 130}
$chCol_3, $chCol_5, $chCol_6, $chCol_7, $chCol12 | % {$_.Width = 70}
$tabCtrl.Controls.AddRange(@($tpPage1, $tpPage2, $tpPage3))
$tpPage1, $tpPage2, $tpPage3 | % {$_.UseVisualStyleBackColor = $true}
$rtbData.ReadOnly = $true
$img1, $img2, $img3, $img4, $img5 | % {$imgList.Images.Add((Get-ImageFromString $_))}
$sbStrip.Items.AddRange(@($sbLbl_1, $sbLbl_2, $sbLbl_3, $sbLbl_4))
#
#mnuFile
#
$mnuFile.DropDownItems.AddRange(@($mnuExit))
$mnuFile.Text = "&File"
#
#mnuExit
#
$mnuExit.ShortcutKeys = "Control", "X"
$mnuExit.Text = "E&xit"
$mnuExit.Add_Click({$frmMain.Close()})
#
#mnuView
#
$mnuView.DropDownItems.AddRange(@($mnuTool, $mnuSBar))
$mnuView.Text = "&View"
#
#mnuTool
#
$mnuTool.DropDownItems.AddRange(@($mnuPane, $mnuMore))
$mnuTool.Text = "&Tools"
#
#mnuPane
#
$mnuPane.Checked = $true
$mnuPane.ShortcutKeys = "Control", "L"
$mnuPane.Text = "&Lower Pane"
$mnuPane.Add_Click($mnuPane_Click)
#
#mnuMore
#
$mnuMore.ShortcutKeys = "Control", "F"
$mnuMore.Text = "&Filter And Query"
$mnuMore.Add_Click($mnuMore_Click)
#
#mnuSBar
#
$mnuSBar.Checked = $true
$mnuSBar.Text = "&Status Bar"
$mnuSBar.Add_Click($mnuSBar_Click)
#
#mnuHelp
#
$mnuHelp.DropDownItems.AddRange(@($mnuInfo))
$mnuHelp.Text = "&Help"
#
#mnuInfo
#
$mnuInfo.Text = "About..."
$mnuInfo.Add_Click({frmInfo_Show})
#
#tsStrip
#
$tsStrip.Items.AddRange(@($tsLbl_1, $tsWCard, $tsDelim, $tsLbl_2, $tsQuery, $tsQTest))
$tsStrip.Visible = $false
#
#tsWCard
#
$tsWCard.Size = New-Object Drawing.Size(37, 19)
$tsWCard.Add_TextChanged($tsWCard_TextChanged)
#
#tsQuery
#
$tsQuery.Text = "Select * From Win32_"
$tsQuery.Add_GotFocus($tsQuery_GotFocus)
#
#tsQTest
#
$tsQTest.Image = (Get-ImageFromString $img6)
$tsQTest.ToolTipText = "Test Query"
$tsQTest.Add_Click($tsQTest_Click)
#
#scSplt1
#
$scSplt1.Panel1.Controls.Add($scSplt2)
$scSplt1.Panel2.Controls.Add($tabCtrl)
$scSplt1.Panel2MinSize = 23
$scSplt1.SplitterDistance = 330
#
#scSplt2
#
$scSplt2.Panel1.Controls.Add($tvRoots)
$scSplt2.Panel2.Controls.Add($scSplt3)
$scSplt2.Panel1MinSize = 17
$scSplt2.SplitterDistance = 30
#
#scSplt3
#
$scSplt3.Panel1.Controls.Add($lvList1)
$scSplt3.Panel2.Controls.Add($lvList2)
#
#tvRoots
#
$tvRoots.ImageList = $imgList
$tvRoots.Select()
$tvRoots.Sorted = $true
$tvRoots.Add_AfterExpand({Get-SubNameSpaces $_.Node.Nodes})
$tvRoots.Add_AfterSelect($tvRoots_AfterSelect)
#
#tpPage1
#
$tpPage1.Controls.AddRange(@($lvList3))
$tpPage1.Text = "Derivation"
#
#tpPage2
#
$tpPage2.Controls.AddRange(@($lvList4))
$tpPage2.Text = "Qualifiers"
#
#tpPage3
#
$tpPage3.Controls.AddRange(@($rtbData))
$tpPage3.Text = "Blank"
#
#chColX.Text
#
$chCol_4.Text = "Origin"
$chCol_5.Text = "Type"
$chCol_7.Text = "IsArray"
$chCol11.Text = "Value"
$chCol12.Text = "IsAmended"
$chCol14.Text = "IsOverridable"
$chCol15.Text = "PropagatesToInstance"
$chCol16.Text = "PropagatesToSubclass"
#
#chCol_X.Width
#
$chCol_4.Width = 90
$chCol_8.Width = 230
$chCol10.Width = 170
$chCol13.Width = 50
$chCol14.Width = 80
#
#sbLbl_X
#
$sbLbl_2.ForeColor = "DarkMagenta"
$sbLbl_3.ForeColor = "DarkGreen"
$sbLbl_4.ForeColor = "DarkBlue"
#
#frmMain
#
$frmMain.ClientSize = New-Object Drawing.Size(800, 600)
$frmMain.Controls.AddRange(@($scSplt1, $sbStrip, $tsStrip, $mnuMain))
$frmMain.Icon = $ico
$frmMain.MainMenuStrip = $mnuMain
$frmMain.StartPosition = "CenterScreen"
$frmMain.Text = "WMI Explorer"
$frmMain.Add_Load($frmMain_Load)
[void]$frmMain.ShowDialog()
}
function frmInfo_Show {
$frmInfo = New-Object Windows.Forms.Form
$pbImage = New-Object Windows.Forms.PictureBox
$lblName = New-Object Windows.Forms.Label
$lblCopy = New-Object Windows.Forms.Label
$btnExit = New-Object Windows.Forms.Button
#
#pbImage
#
$pbImage.Image = $ico.ToBitmap()
$pbImage.Location = New-Object Drawing.Point(16, 16)
$pbImage.Size = New-Object Drawing.Size(32, 32)
$pbImage.SizeMode = "StretchImage"
#
#lblName
#
$lblName.Font = $bold
$lblName.Location = New-Object Drawing.Point(53, 19)
$lblName.Size = New-Object Drawing.Size(360, 18)
$lblName.Text = "WMI Explorer v2.05"
#
#lblCopy
#
$lblCopy.Location = New-Object Drawing.Point(67, 37)
$lblCopy.Size = New-Object Drawing.Size(360, 23)
$lblCopy.Text = "(C) 2013 greg zakharov forum.script-coding.com"
#
#btnExit
#
$btnExit.Location = New-Object Drawing.Point(135, 67)
$btnExit.Text = "OK"
#
#frmInfo
#
$frmInfo.AcceptButton = $btnExit
$frmInfo.CancelButton = $btnExit
$frmInfo.ClientSize = New-Object Drawing.Size(350, 110)
$frmInfo.ControlBox = $false
$frmInfo.Controls.AddRange(@($pbImage, $lblName, $lblCopy, $btnExit))
$frmInfo.FormBorderStyle = "FixedSingle"
$frmInfo.ShowInTaskBar = $false
$frmInfo.StartPosition = "CenterParent"
$frmInfo.Text = "About..."
$frmInfo.Add_Load($frmInfo_Load)
[void]$frmInfo.ShowDialog()
}
frmMain_Show