You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if ($DesiredValues.GetType().FullName -notin$types)
63
-
{
64
-
throw ("Property 'DesiredValues' in Test-DscParameterState must be either a Hashtable or CimInstance. Type detected was $($DesiredValues.GetType().Name)")
65
-
}
66
-
67
-
if ($DesiredValues.GetType().FullName -eq'Microsoft.Management.Infrastructure.CimInstance'-and-not$ValuesToCheck)
68
-
{
69
-
throw ("If 'DesiredValues' is a CimInstance then property 'ValuesToCheck' must contain a value")
if ($currentType.Name-ne'Unknown'-and$desiredType.Name-eq'PSCredential')
104
-
{
105
-
# This is a credential object. Compare only the user name
106
-
if ($currentType.Name-eq'PSCredential'-and$CurrentValues.$key.UserName-eq$DesiredValuesClean.$key.UserName)
107
-
{
108
-
Write-Verbose-Message ('MATCH: PSCredential username match. Current state is {0} and desired state is {1}'-f$CurrentValues.$key.UserName,$DesiredValuesClean.$key.UserName)
109
-
continue
110
-
}
111
-
else
112
-
{
113
-
Write-Verbose-Message ('NOTMATCH: PSCredential username mismatch. Current state is {0} and desired state is {1}'-f$CurrentValues.$key.UserName,$DesiredValuesClean.$key.UserName)
114
-
$returnValue=$false
115
-
}
116
-
117
-
# Assume the string is our username when the matching desired value is actually a credential
Write-Verbose-Message ('MATCH: PSCredential username match. Current state is {0} and desired state is {1}'-f$CurrentValues.$key,$DesiredValuesClean.$key.UserName)
121
-
continue
122
-
}
123
-
else
124
-
{
125
-
Write-Verbose-Message ('NOTMATCH: PSCredential username mismatch. Current state is {0} and desired state is {1}'-f$CurrentValues.$key,$DesiredValuesClean.$key.UserName)
126
-
$returnValue=$false
127
-
}
128
-
}
129
-
130
-
if (-not$TurnOffTypeChecking)
131
-
{
132
-
if (($desiredType.Name-ne'Unknown'-and$currentType.Name-ne'Unknown') -and
133
-
$desiredType.FullName-ne$currentType.FullName)
134
-
{
135
-
Write-Verbose-Message "NOTMATCH: Type mismatch for property '$key' Current state type is '$($currentType.Name)' and desired type is '$($desiredType.Name)'"
136
-
continue
137
-
}
138
-
}
139
-
140
-
if ($CurrentValues.$key-eq$DesiredValuesClean.$key-and-not$desiredType.IsArray)
141
-
{
142
-
Write-Verbose-Message "MATCH: Value (type $($desiredType.Name)) for property '$key' does match. Current state is '$($CurrentValues.$key)' and desired state is '$($DesiredValuesClean.$key)'"
143
-
continue
144
-
}
145
-
146
-
if ($DesiredValuesClean.GetType().Name -in'HashTable','PSBoundParametersDictionary')
Write-Verbose-Message "MATCH: Value (type $($desiredType.Name)) for property '$key' does match. Current state is '$($CurrentValues.$key)' and desired state is '$($DesiredValuesClean.$key)'"
158
-
continue
159
-
}
160
-
161
-
if ($desiredType.IsArray)
162
-
{
163
-
Write-Verbose"Comparing values in property '$key'"
164
-
if (-not$CurrentValues.ContainsKey($key) -or-not$CurrentValues.$key)
165
-
{
166
-
Write-Verbose-Message "NOTMATCH: Value (type $($desiredType.Name)) for property '$key' does not match. Current state is '$($CurrentValues.$key)' and desired state is '$($DesiredValuesClean.$key)'"
Write-Verbose-Message "NOTMATCH: Value (type $($desiredType.Name)) for property '$key' does have a different count. Current state count is '$($CurrentValues.$key.Count)' and desired state count is '$($DesiredValuesClean.$key.Count)'"
173
-
$returnValue=$false
174
-
continue
175
-
}
176
-
else
177
-
{
178
-
$desiredArrayValues=$DesiredValues.$key
179
-
$currentArrayValues=$CurrentValues.$key
180
-
181
-
for ($i=0; $i-lt$desiredArrayValues.Count; $i++)
182
-
{
183
-
if ($null-ne$desiredArrayValues[$i])
184
-
{
185
-
$desiredType=$desiredArrayValues[$i].GetType()
186
-
}
187
-
else
188
-
{
189
-
$desiredType= [psobject]@{ Name='Unknown' }
190
-
}
191
-
192
-
if ($null-ne$currentArrayValues[$i])
193
-
{
194
-
$currentType=$currentArrayValues[$i].GetType()
195
-
}
196
-
else
197
-
{
198
-
$currentType= [psobject]@{ Name='Unknown' }
199
-
}
200
-
201
-
if (-not$TurnOffTypeChecking)
202
-
{
203
-
if (($desiredType.Name-ne'Unknown'-and$currentType.Name-ne'Unknown') -and
204
-
$desiredType.FullName-ne$currentType.FullName)
205
-
{
206
-
Write-Verbose-Message "`tNOTMATCH: Type mismatch for property '$key' Current state type of element [$i] is '$($currentType.Name)' and desired type is '$($desiredType.Name)'"
207
-
$returnValue=$false
208
-
continue
209
-
}
210
-
}
211
-
212
-
if ($desiredArrayValues[$i] -ne$currentArrayValues[$i])
213
-
{
214
-
Write-Verbose-Message "`tNOTMATCH: Value [$i] (type $($desiredType.Name)) for property '$key' does match. Current state is '$($currentArrayValues[$i])' and desired state is '$($desiredArrayValues[$i])'"
215
-
$returnValue=$false
216
-
continue
217
-
}
218
-
else
219
-
{
220
-
Write-Verbose-Message "`tMATCH: Value [$i] (type $($desiredType.Name)) for property '$key' does match. Current state is '$($currentArrayValues[$i])' and desired state is '$($desiredArrayValues[$i])'"
221
-
continue
222
-
}
223
-
}
224
-
225
-
}
226
-
}
227
-
else {
228
-
if ($DesiredValuesClean.$key-ne$CurrentValues.$key)
229
-
{
230
-
Write-Verbose-Message "NOTMATCH: Value (type $($desiredType.Name)) for property '$key' does not match. Current state is '$($CurrentValues.$key)' and desired state is '$($DesiredValuesClean.$key)'"
231
-
$returnValue=$false
232
-
}
233
-
234
-
}
235
-
}
236
-
237
-
Write-Verbose"Result is '$returnValue'"
238
-
return$returnValue
239
-
}
240
-
241
-
functionTest-DSCObjectHasProperty
242
-
{
243
-
[CmdletBinding()]
244
-
[OutputType([bool])]
245
-
param
246
-
(
247
-
[Parameter(Mandatory)]
248
-
[object]
249
-
$Object,
250
-
251
-
[Parameter(Mandatory)]
252
-
[string]
253
-
$PropertyName
254
-
)
255
-
256
-
if ($Object.PSObject.Properties.Name-contains$PropertyName)
0 commit comments