Skip to content

Commit 1ec50fc

Browse files
author
Steve Lee (POWERSHELL HE/HIM) (from Dev Box)
committed
add filtering based on property values
1 parent f90b257 commit 1ec50fc

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

dsc/examples/wmi_inventory.dsc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ resources:
3939
adaptertype:
4040
netconnectionid:
4141
serviceName:
42+
netconnectionstatus: 2

wmi-adapter/Tests/wmi.tests.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,6 @@ Describe 'WMI adapter resource tests' {
5656
$res.results[0].result.actualState[0].BootupState | Should -BeNullOrEmpty
5757
$res.results[0].result.actualState[1].Caption | Should -Not -BeNullOrEmpty
5858
$res.results[0].result.actualState[1].BuildNumber | Should -BeNullOrEmpty
59+
$res.results[0].result.actualState[4].AdapterType | Should -BeLike "Ethernet*"
5960
}
6061
}

wmi-adapter/wmi.resource.ps1

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ param(
99
$stdinput
1010
)
1111

12+
trap {
13+
Write-Trace -Level Error -message $_.Exception.Message
14+
exit 1
15+
}
16+
1217
$ProgressPreference = 'Ignore'
1318
$WarningPreference = 'Ignore'
1419
$VerbosePreference = 'Ignore'
@@ -95,12 +100,43 @@ elseif ($Operation -eq 'Get')
95100
if ($r.properties)
96101
{
97102
$query = "SELECT $($r.properties.psobject.properties.name -join ',') FROM $wmi_classname"
103+
$where = " WHERE "
104+
$useWhere = $false
105+
$first = $true
106+
foreach ($property in $r.properties.psobject.properties)
107+
{
108+
if ($null -ne $property.value)
109+
{
110+
$useWhere = $true
111+
if ($first)
112+
{
113+
$first = $false
114+
}
115+
else
116+
{
117+
$where += " AND "
118+
}
119+
120+
if ($property.TypeNameOfValue -eq "System.String")
121+
{
122+
$where += "$($property.Name) = '$($property.Value)'"
123+
}
124+
else
125+
{
126+
$where += "$($property.Name) = $($property.Value)"
127+
}
128+
}
129+
}
130+
if ($useWhere)
131+
{
132+
$query += $where
133+
}
98134
Write-Trace -Level Trace -message "Query: $query"
99-
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -Query $query
135+
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -Query $query -ErrorAction Stop
100136
}
101137
else
102138
{
103-
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -ClassName $wmi_classname
139+
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -ClassName $wmi_classname -ErrorAction Stop
104140
}
105141

106142
if ($wmi_instances)
@@ -142,7 +178,7 @@ elseif ($Operation -eq 'Get')
142178
$wmi_classname = $type_fields[1]
143179

144180
#TODO: add filtering based on supplied properties of $inputobj_pscustomobj
145-
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -ClassName $wmi_classname
181+
$wmi_instances = Get-CimInstance -Namespace $wmi_namespace -ClassName $wmi_classname -ErrorAction Stop
146182

147183
if ($wmi_instances)
148184
{

0 commit comments

Comments
 (0)