Closed DarkLite1 closed 5 years ago
When we test the same code with Assert-Equal -Actual $Actual -Expected $Expected
we get an error too. I've tried to clean it up for readability purposes:
AssertionException: Expected ciminstance '
ciminstance{CimClass=Root/Microsoft/Windows/FSRM:MSFT_FSRMQuota;
CimInstanceProperties=Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection;
CimSystemProperties=Microsoft.Management.Infrastructure.CimSystemProperties;
Description=;
Disabled=False;
MatchesTemplate=True;
Path=C:\Users\bob\AppData\Local\Temp\27\34eb448c-1418-4a35-bae4-89ea468c6319\HOME\user;
PeakUsage=1024;
PSComputerName=;
Size=10737418240;
SoftLimit=True;
Template=TEST HOME Quota (10GB Soft);
Threshold=;
Usage=1024}'
, but got ciminstance '
ciminstance{CimClass=Root/Microsoft/Windows/FSRM:MSFT_FSRMQuota;
CimInstanceProperties=Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection;
CimSystemProperties=Microsoft.Management.Infrastructure.CimSystemProperties;
Description=;
Disabled=False;
MatchesTemplate=True;
Path=C:\Users\bob\AppData\Local\Temp\27\34eb448c-1418-4a35-bae4-89ea468c6319\HOME\user;
PeakUsage=1024;
PSComputerName=;
Size=10737418240;
SoftLimit=True;
Template=TEST HOME Quota (10GB Soft);
Threshold=;
Usage=1024}'.
at Assert-Equal, C:\Program Files\WindowsPowerShell\Modules\Assert\0.9.1\src\General\Assert-Equal.ps1: line 15
at <ScriptBlock>, S:\test\Brecht\Home drives quota\Set-Quota.Tests.ps1: line 106
My first thought was that the order of the object properties was not the same for both objects. But the error appears to put them in the same order and saying there not the same. So it must be something else that I'm missing...
# Not ok:
$Actual | Should -BeExactly $Expected
# Ok:
$Actual | Should -BeExactly $Actual
@DarkLite1 Not sure what the problem is, maybe there is a timestamp somewhere? You could compare the properties one by one to see where the difference is.
Something like (most likely wrong :D):
$properties = $Expected.PsObject.Properties
foreach ($p in $properties) {
try {
Assert-Equivalent -Actual $Actual.$p -Expected $Expected.$p
} catch {
$p
$_ | fl * -force | out-string
}
}
Thank you for the tip. I've tried your suggestion below and it does not throw. All is fine when I use this.
$Actual = Get-FsrmQuota -Path $UserFolder
$Expected = Get-FsrmQuota -Path $UserFolder
$properties = $Expected.PsObject.Properties
foreach ($p in $properties) {
Assert-Equivalent -Actual $Actual.$p -Expected $Expected.$p
}
When trying the original code Assert-Equivalent -Actual $Actual -Expected $Expected
it's still not ok. So I've been thinking that the differences might be on a deeper level within the object. So when I tried excluding some objects it worked:
$Expected= Get-FsrmQuota -Path $UserFolder | Select-Object * -ExcludeProperty CimClass, CimInstanceProperties, CimSystemProperties
$Actual = Get-FsrmQuota -Path $UserFolder | Select-Object * -ExcludeProperty CimClass, CimInstanceProperties, CimSystemProperties
Assert-Equivalent -Actual $Actual -Expected $Expected
So it seems like Assert-Equivalent
has an issue with the properties starting with cim
or more general, the ones on a very deep level. that are an object in itself. For example your suggestion code doesn't find the differences between $Actual.Threshold.Action.Subject
and $Expected.Threshold.Action.Subject
.
Seems like a tricky thing to test, these quota's
It's maybe not best practice or very clever, but we ended up hard coding the test like this:
$Properties = @('Size' , 'Description', 'SoftLimit', 'Template')
foreach ($P in $Properties) {
$Actual.$P | Should -BeExactly $Expected.$P -Because "the '$P' is not the same"
}
$ThresholdProperties = @('Percentage')
foreach ($P in $ThresholdProperties) {
$Actual.Threshold.$P | Should -BeExactly $Expected.Threshold.$P -Because "the 'Threshold.$P' is not the same"
}
foreach ($E in $Expected.Threshold) {
$A = $Actual.Threshold | where {$E.Percentage -eq $_.Percentage}
$ThresholdActionProperties = @('Body', 'MailTo', 'MailCC', 'MailBCC', 'Subject',
'ShouldLogError', 'Type', 'RunLimitInterval')
foreach ($P in $ThresholdActionProperties) {
$A.Action.$P | Should -BeExactly $E.Action.$P -Because "the 'Threshold.Action.$P' for percentage '$($E.Percentage)' is not the same"
}
}
This seems to tell me exactly where the problem is and it spots the differences where we need it.
I am seeing this as well. Comparing $Actual and $Expected fails, but testing each property succeeds.
# Fails
Assert-Equivalent -Actual $Results -Expected $Expected
# Pass
Assert-Equivalent -Actual $Results.Prop1 -Expected $Expected.Prop1
Assert-Equivalent -Actual $Results.Prop2 -Expected $Expected.Prop2
Assert-Equivalent -Actual $Results.Prop3 -Expected $Expected.Prop3
Assert-Equivalent -Actual $Results.Prop4 -Expected $Expected.Prop4
Assert-Equivalent -Actual $Results.Prop5 -Expected $Expected.Prop5
Assert equivalent definitely needs a debug/tracing output that says what exactly is happening, otherwise debugging this remains a nightmare.
@DarkLite1 there is verbose-equivalence
branch could you try using it to debug the issue? I don't have the cmdlet. To see the output simply provide -Verbose
to Assert-Equivalent
.
Thank you @nohwnd , I've installed the other branch you suggested and ran the code again in -Verbose
mode. Here is the output:
Describing Test quota
VERBOSE: $Expected has type ciminstance, $Actual has type ciminstance, they are both non-null.
VERBOSE: $Expected is an object of type ciminstance, we will be comparing $Actual to objects.
VERBOSE: Comparing all (14) properties of $Expected to $Actual.
VERBOSE: Property 'Description was found on $Actual, comparing them for equivalence.
VERBOSE: (.Description) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.Description) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Description) - Comparing values as string because $Expected has that type.
VERBOSE: (.Description) EQUIVALENCE - $Actual is equivalent to because it is , and coalesced to string is .
VERBOSE: EQUIVALENCE - Property 'Description is equivalent.
VERBOSE: Property 'Disabled was found on $Actual, comparing them for equivalence.
VERBOSE: (.Disabled) - $Expected has type bool, $Actual has type bool, they are both non-null.
VERBOSE: (.Disabled) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Disabled) - Comparing values as bool because $Expected has that type.
VERBOSE: (.Disabled) EQUIVALENCE - $Actual is equivalent to $false because it is $false, and $false coalesced to bool is $false.
VERBOSE: EQUIVALENCE - Property 'Disabled is equivalent.
VERBOSE: Property 'MatchesTemplate was found on $Actual, comparing them for equivalence.
VERBOSE: (.MatchesTemplate) - $Expected has type bool, $Actual has type bool, they are both non-null.
VERBOSE: (.MatchesTemplate) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.MatchesTemplate) - Comparing values as bool because $Expected has that type.
VERBOSE: (.MatchesTemplate) EQUIVALENCE - $Actual is equivalent to $false because it is $false, and $false coalesced to bool is $false.
VERBOSE: EQUIVALENCE - Property 'MatchesTemplate is equivalent.
VERBOSE: Property 'Path was found on $Actual, comparing them for equivalence.
VERBOSE: (.Path) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.Path) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Path) - Comparing values as string because $Expected has that type.
VERBOSE: (.Path) EQUIVALENCE - $Actual is equivalent to S:\Test\Brecht\HOME\user because it is S:\Test\Brecht\HOME\user, and S:\Test\Brecht\HOME\user coalesced to string is S:\Test\Brecht\HOME\user.
VERBOSE: EQUIVALENCE - Property 'Path is equivalent.
VERBOSE: Property 'PeakUsage was found on $Actual, comparing them for equivalence.
VERBOSE: (.PeakUsage) - $Expected has type uint64, $Actual has type uint64, they are both non-null.
VERBOSE: (.PeakUsage) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.PeakUsage) - Comparing values as uint64 because $Expected has that type.
VERBOSE: (.PeakUsage) EQUIVALENCE - $Actual is equivalent to 1024 because it is 1024, and 1024 coalesced to uint64 is 1024.
VERBOSE: EQUIVALENCE - Property 'PeakUsage is equivalent.
VERBOSE: Property 'Size was found on $Actual, comparing them for equivalence.
VERBOSE: (.Size) - $Expected has type uint64, $Actual has type uint64, they are both non-null.
VERBOSE: (.Size) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Size) - Comparing values as uint64 because $Expected has that type.
VERBOSE: (.Size) EQUIVALENCE - $Actual is equivalent to 5368709120 because it is 5368709120, and 5368709120 coalesced to uint64 is 5368709120.
VERBOSE: EQUIVALENCE - Property 'Size is equivalent.
VERBOSE: Property 'SoftLimit was found on $Actual, comparing them for equivalence.
VERBOSE: (.SoftLimit) - $Expected has type bool, $Actual has type bool, they are both non-null.
VERBOSE: (.SoftLimit) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.SoftLimit) - Comparing values as bool because $Expected has that type.
VERBOSE: (.SoftLimit) EQUIVALENCE - $Actual is equivalent to $false because it is $false, and $false coalesced to bool is $false.
VERBOSE: EQUIVALENCE - Property 'SoftLimit is equivalent.
VERBOSE: Property 'Template was found on $Actual, comparing them for equivalence.
VERBOSE: (.Template) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.Template) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Template) - Comparing values as string because $Expected has that type.
VERBOSE: (.Template) EQUIVALENCE - $Actual is equivalent to TEST HOME Quota (10GB Soft) because it is TEST HOME Quota (10GB Soft), and TEST HOME Quota (10GB Soft) coalesced to string is TEST HOME Quota (10GB Soft).
VERBOSE: EQUIVALENCE - Property 'Template is equivalent.
VERBOSE: Property 'Threshold was found on $Actual, comparing them for equivalence.
VERBOSE: (.Threshold) - $Expected is $null, so we are expecting $null.
VERBOSE: (.Threshold) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: EQUIVALENCE - Property 'Threshold is equivalent.
VERBOSE: Property 'Usage was found on $Actual, comparing them for equivalence.
VERBOSE: (.Usage) - $Expected has type uint64, $Actual has type uint64, they are both non-null.
VERBOSE: (.Usage) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.Usage) - Comparing values as uint64 because $Expected has that type.
VERBOSE: (.Usage) EQUIVALENCE - $Actual is equivalent to 1024 because it is 1024, and 1024 coalesced to uint64 is 1024.
VERBOSE: EQUIVALENCE - Property 'Usage is equivalent.
VERBOSE: Property 'PSComputerName was found on $Actual, comparing them for equivalence.
VERBOSE: (.PSComputerName) - $Expected is $null, so we are expecting $null.
VERBOSE: (.PSComputerName) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: EQUIVALENCE - Property 'PSComputerName is equivalent.
VERBOSE: Property 'CimClass was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass) - $Expected has type cimclass, $Actual has type cimclass, they are both non-null.
VERBOSE: (.CimClass) - $Expected is an object of type cimclass, we will be comparing $Actual to objects.
VERBOSE: (.CimClass) - Comparing all (7) properties of $Expected to $Actual.
VERBOSE: (.CimClass) - Property 'CimClassName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimClassName) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimClass.CimClassName) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimClass.CimClassName) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimClass.CimClassName) EQUIVALENCE - $Actual is equivalent to MSFT_FSRMQuota because it is MSFT_FSRMQuota, and MSFT_FSRMQuota coalesced to string is MSFT_FSRMQuota.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimClassName is equivalent.
VERBOSE: (.CimClass) - Property 'CimSuperClassName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSuperClassName) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimSuperClassName) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimSuperClassName is equivalent.
VERBOSE: (.CimClass) - Property 'CimSuperClass was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSuperClass) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimSuperClass) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimSuperClass is equivalent.
VERBOSE: (.CimClass) - Property 'CimClassProperties was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimClassProperties) - $Expected has type Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, $Actual has type Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, they are both non-null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is a collection, we will be comparing $Actual to collections.
VERBOSE: (.CimClass.CimClassProperties) - Comparing items in collection, $Expected has lenght 10, $Actual has length 10.
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[0]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[1]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[1].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[2]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[2].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[3]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[3].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[4]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[4].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[5]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[5].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[6]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[6].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[7]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[7].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[8]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[8].
VERBOSE: (.CimClass.CimClassProperties) -
Searching for $Expected[9]:
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual does not contain $Expected[9].
VERBOSE: (.CimClass.CimClassProperties) DIFFERENCE - $Actual and $Expected arrays are not equivalent.
VERBOSE: (.CimClass) DIFFERENCE - Property 'CimClassProperties is not equivalent.
VERBOSE: (.CimClass) - Property 'CimClassQualifiers was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected has type Microsoft.Management.Infrastructure.Internal.Data.CimClassQualifierCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, $Actual has type Microsoft.Management.Infrastructure.Internal.Data.CimClassQualifierCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, they are both non-null.
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected is a collection, we will be comparing $Actual to collections.
VERBOSE: (.CimClass.CimClassQualifiers) - Comparing items in collection, $Expected has lenght 2, $Actual has length 2.
VERBOSE: (.CimClass.CimClassQualifiers) -
Searching for $Expected[0]:
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassQualifiers) -
Searching for $Expected[1]:
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassQualifiers) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassQualifiers) DIFFERENCE - $Actual does not contain $Expected[1].
VERBOSE: (.CimClass.CimClassQualifiers) EQUIVALENCE - $Actual and $Expected arrays are equivalent.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimClassQualifiers is equivalent.
VERBOSE: (.CimClass) - Property 'CimClassMethods was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimClassMethods) - $Expected has type Microsoft.Management.Infrastructure.Internal.Data.CimMethodDeclarationCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, $Actual has type Microsoft.Management.Infrastructure.Internal.Data.CimMethodDeclarationCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, they are both non-null.
VERBOSE: (.CimClass.CimClassMethods) - $Expected is a collection, we will be comparing $Actual to collections.
VERBOSE: (.CimClass.CimClassMethods) - Comparing items in collection, $Expected has lenght 2, $Actual has length 2.
VERBOSE: (.CimClass.CimClassMethods) -
Searching for $Expected[0]:
VERBOSE: (.CimClass.CimClassMethods) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassMethods) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimClass.CimClassMethods) -
Searching for $Expected[1]:
VERBOSE: (.CimClass.CimClassMethods) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassMethods) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimClassMethods) DIFFERENCE - $Actual does not contain $Expected[1].
VERBOSE: (.CimClass.CimClassMethods) EQUIVALENCE - $Actual and $Expected arrays are equivalent.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimClassMethods is equivalent.
VERBOSE: (.CimClass) - Property 'CimSystemProperties was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSystemProperties) - $Expected has type Microsoft.Management.Infrastructure.CimSystemProperties, $Actual has type Microsoft.Management.Infrastructure.CimSystemProperties, they are both non-null.
VERBOSE: (.CimClass.CimSystemProperties) - $Expected is an object of type Microsoft.Management.Infrastructure.CimSystemProperties, we will be comparing $Actual to objects.
VERBOSE: (.CimClass.CimSystemProperties) - Comparing all (4) properties of $Expected to $Actual.
VERBOSE: (.CimClass.CimSystemProperties) - Property 'Namespace was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSystemProperties.Namespace) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimClass.CimSystemProperties.Namespace) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimClass.CimSystemProperties.Namespace) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimClass.CimSystemProperties.Namespace) EQUIVALENCE - $Actual is equivalent to Root/Microsoft/Windows/FSRM because it is Root/Microsoft/Windows/FSRM, and Root/Microsoft/Windows/FSRM coalesced to string is Root/Microsoft/Windows/FSRM.
VERBOSE: (.CimClass.CimSystemProperties) EQUIVALENCE - Property 'Namespace is equivalent.
VERBOSE: (.CimClass.CimSystemProperties) - Property 'ServerName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSystemProperties.ServerName) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimClass.CimSystemProperties.ServerName) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimClass.CimSystemProperties.ServerName) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimClass.CimSystemProperties.ServerName) EQUIVALENCE - $Actual is equivalent to DEUSGFRANIT03 because it is DEUSGFRANIT03, and DEUSGFRANIT03 coalesced to string is DEUSGFRANIT03.
VERBOSE: (.CimClass.CimSystemProperties) EQUIVALENCE - Property 'ServerName is equivalent.
VERBOSE: (.CimClass.CimSystemProperties) - Property 'ClassName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSystemProperties.ClassName) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimClass.CimSystemProperties.ClassName) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimClass.CimSystemProperties.ClassName) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimClass.CimSystemProperties.ClassName) EQUIVALENCE - $Actual is equivalent to MSFT_FSRMQuota because it is MSFT_FSRMQuota, and MSFT_FSRMQuota coalesced to string is MSFT_FSRMQuota.
VERBOSE: (.CimClass.CimSystemProperties) EQUIVALENCE - Property 'ClassName is equivalent.
VERBOSE: (.CimClass.CimSystemProperties) - Property 'Path was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimClass.CimSystemProperties.Path) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimClass.CimSystemProperties.Path) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimClass.CimSystemProperties) EQUIVALENCE - Property 'Path is equivalent.
VERBOSE: (.CimClass.CimSystemProperties) EQUIVALENCE - $Actual has no extra properties that $Expected does not have.
VERBOSE: (.CimClass) EQUIVALENCE - Property 'CimSystemProperties is equivalent.
VERBOSE: (.CimClass) EQUIVALENCE - $Actual has no extra properties that $Expected does not have.
VERBOSE: DIFFERENCE - Property 'CimClass is not equivalent.
VERBOSE: Property 'CimInstanceProperties was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimInstanceProperties) - $Expected has type Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, $Actual has type Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, they are both non-null.
VERBOSE: (.CimInstanceProperties) - $Expected is a collection, we will be comparing $Actual to collections.
VERBOSE: (.CimInstanceProperties) - Comparing items in collection, $Expected has lenght 10, $Actual has length 10.
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[0]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[1]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[1].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[2]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[2].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[3]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[3].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[4]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[4].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[5]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[5].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[6]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[6].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[7]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[7].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[8]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[8].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[9]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[9].
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual and $Expected arrays are not equivalent.
VERBOSE: DIFFERENCE - Property 'CimInstanceProperties is not equivalent.
VERBOSE: Property 'CimSystemProperties was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimSystemProperties) - $Expected has type Microsoft.Management.Infrastructure.CimSystemProperties, $Actual has type Microsoft.Management.Infrastructure.CimSystemProperties, they are both non-null.
VERBOSE: (.CimSystemProperties) - $Expected is an object of type Microsoft.Management.Infrastructure.CimSystemProperties, we will be comparing $Actual to objects.
VERBOSE: (.CimSystemProperties) - Comparing all (4) properties of $Expected to $Actual.
VERBOSE: (.CimSystemProperties) - Property 'Namespace was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimSystemProperties.Namespace) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimSystemProperties.Namespace) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimSystemProperties.Namespace) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimSystemProperties.Namespace) EQUIVALENCE - $Actual is equivalent to Root/Microsoft/Windows/FSRM because it is Root/Microsoft/Windows/FSRM, and Root/Microsoft/Windows/FSRM coalesced to string is Root/Microsoft/Windows/FSRM.
VERBOSE: (.CimSystemProperties) EQUIVALENCE - Property 'Namespace is equivalent.
VERBOSE: (.CimSystemProperties) - Property 'ServerName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimSystemProperties.ServerName) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimSystemProperties.ServerName) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimSystemProperties.ServerName) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimSystemProperties.ServerName) EQUIVALENCE - $Actual is equivalent to DEUSGFRANIT03 because it is DEUSGFRANIT03, and DEUSGFRANIT03 coalesced to string is DEUSGFRANIT03.
VERBOSE: (.CimSystemProperties) EQUIVALENCE - Property 'ServerName is equivalent.
VERBOSE: (.CimSystemProperties) - Property 'ClassName was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimSystemProperties.ClassName) - $Expected has type string, $Actual has type string, they are both non-null.
VERBOSE: (.CimSystemProperties.ClassName) - $Expected is a value (value type, string, single value array, or a scriptblock), we will be comparing $Actual to value types.
VERBOSE: (.CimSystemProperties.ClassName) - Comparing values as string because $Expected has that type.
VERBOSE: (.CimSystemProperties.ClassName) EQUIVALENCE - $Actual is equivalent to MSFT_FSRMQuota because it is MSFT_FSRMQuota, and MSFT_FSRMQuota coalesced to string is MSFT_FSRMQuota.
VERBOSE: (.CimSystemProperties) EQUIVALENCE - Property 'ClassName is equivalent.
VERBOSE: (.CimSystemProperties) - Property 'Path was found on $Actual, comparing them for equivalence.
VERBOSE: (.CimSystemProperties.Path) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimSystemProperties.Path) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
VERBOSE: (.CimSystemProperties) EQUIVALENCE - Property 'Path is equivalent.
VERBOSE: (.CimSystemProperties) EQUIVALENCE - $Actual has no extra properties that $Expected does not have.
VERBOSE: EQUIVALENCE - Property 'CimSystemProperties is equivalent.
VERBOSE: EQUIVALENCE - $Actual has no extra properties that $Expected does not have.
[-] Should be ok and is not ok 1.84s
AssertionException: Expected and actual are not equivalent!
Expected:
ciminstance{
CimClass=Root/Microsoft/Windows/FSRM:MSFT_FSRMQuota;
CimInstanceProperties=Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection;
CimSystemProperties=Microsoft.Management.Infrastructure.CimSystemProperties;
Description=;
Disabled=False;
MatchesTemplate=False;
Path=S:\Test\Brecht\HOME\user;
PeakUsage=1024;
PSComputerName=;
Size=5368709120;
SoftLimit=False;
Template=TEST HOME Quota (10GB Soft);
Threshold=;
Usage=1024
}
Actual:
ciminstance{
CimClass=Root/Microsoft/Windows/FSRM:MSFT_FSRMQuota;
CimInstanceProperties=Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection;
CimSystemProperties=Microsoft.Management.Infrastructure.CimSystemProperties;
Description=;
Disabled=False;
MatchesTemplate=False;
Path=S:\Test\Brecht\HOME\user;
PeakUsage=1024;
PSComputerName=;
Size=5368709120;
SoftLimit=False;
Template=TEST HOME Quota (10GB Soft);
Threshold=;
Usage=1024
}
Summary:
Expected collection in property .CimClass.CimClassProperties which is 'Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NullValue; Name=Description; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NullValue; Name=Disabled; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, ReadOnly, NullValue; Name=MatchesTemplate; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, Key, NullValue; Name=Path; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NullValue; Name=PeakUsage; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, NullValue; Name=Size; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NullValue; Name=SoftLimit; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection;
ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NullValue; Name=Template; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=InstanceArray; Flags=Property, NullValue; Name=Threshold; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=MSFT_FSRMQuotaThreshold; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NullValue; Name=Usage; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}' to be equivalent to 'Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NullValue; Name=Description; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NullValue; Name=Disabled; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, ReadOnly, NullValue; Name=MatchesTemplate; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, Key, NullValue; Name=Path; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NullValue; Name=PeakUsage; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, NullValue; Name=Size; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NullValue; Name=SoftLimit; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NullValue; Name=Template; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=},
Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=InstanceArray; Flags=Property, NullValue; Name=Threshold; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=MSFT_FSRMQuotaThreshold; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimClassPropertyOfClass, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NullValue; Name=Usage; Qualifiers=Microsoft.Management.Infrastructure.Internal.Data.CimPropertyQualifierCollection; ReferenceClassName=; Value=}' but some values were missing: '$null, $null, $null, $null, $null, $null, $null, $null, $null'.
Expected collection in property .CimInstanceProperties which is 'Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NotModified; IsValueModified=False; Name=Description; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NotModified; IsValueModified=False; Name=Disabled; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=MatchesTemplate; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, Key, NotModified; IsValueModified=False; Name=Path; Value=S:\Test\Brecht\HOME\user}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=PeakUsage; Value=1024}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, NotModified; IsValueModified=False; Name=Size; Value=5368709120}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NotModified; IsValueModified=False; Name=SoftLimit; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NotModified; IsValueModified=False; Name=Template; Value=TEST HOME Quota (10GB Soft)}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=InstanceArray; Flags=Property, NotModified, NullValue; IsValueModified=False; Name=Threshold; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=Usage; Value=1024}' to be equivalent to 'Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NotModified; IsValueModified=False; Name=Description; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NotModified; IsValueModified=False; Name=Disabled; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=MatchesTemplate; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, Key, NotModified; IsValueModified=False; Name=Path; Value=S:\Test\Brecht\HOME\user}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=PeakUsage; Value=1024}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, NotModified; IsValueModified=False; Name=Size; Value=5368709120}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=Boolean; Flags=Property, NotModified; IsValueModified=False; Name=SoftLimit; Value=False}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=String; Flags=Property, NotModified; IsValueModified=False; Name=Template; Value=TEST HOME Quota (10GB Soft)}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=InstanceArray; Flags=Property, NotModified, NullValue; IsValueModified=False; Name=Threshold; Value=}, Microsoft.Management.Infrastructure.Internal.Data.CimPropertyOfInstance, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35{CimType=UInt64; Flags=Property, ReadOnly, NotModified; IsValueModified=False; Name=Usage; Value=1024}' but some values were missing: '$null, $null, $null, $null, $null, $null, $null, $null, $null'.
at Assert-Equivalent, C:\Program Files\WindowsPowerShell\Modules\Assert\src\Equivalence\Assert-Equivalent.ps1: line 584
at <ScriptBlock>, S:\Test\Brecht\Testie3.ps1: line 21
I've scanned through it and here and there it shows:
VERBOSE: (.CimClass.CimClassQualifiers) DIFFERENCE - $Actual does not contain $Expected[1].
When I then check the objects myself, it seems like Assert-Equivalent
is trying to compare an element in an array
to a single CimInstance
object. Some debugging details:
[DBG]: PS S:\Test\Brecht\HOME> $Actual
Description :
Disabled : False
MatchesTemplate : False
Path : S:\Test\Brecht\HOME\user
PeakUsage : 1024
Size : 5368709120
SoftLimit : False
Template : TEST HOME Quota (10GB Soft)
Threshold :
Usage : 1024
PSComputerName :
[DBG]: PS S:\Test\Brecht\HOME> $Expected[1]
[DBG]: PS S:\Test\Brecht\HOME> $Actual.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True CimInstance System.Object
[DBG]: PS S:\Test\Brecht\HOME> $Expected.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True CimInstance System.Object
[DBG]: PS S:\Test\Brecht\HOME> $Expected
Description :
Disabled : False
MatchesTemplate : False
Path : S:\Test\Brecht\HOME\user
PeakUsage : 1024
Size : 5368709120
SoftLimit : False
Template : TEST HOME Quota (10GB Soft)
Threshold :
Usage : 1024
PSComputerName :
@DarkLite1 VERBOSE: (.CimClass.CimClassQualifiers) DIFFERENCE - $Actual does not contain $Expected[1].
that message is a bit misleading. We are searching in a collection and the thing at the start in ()
is the path inside of the object. So it actually means $Actual.CimClass.CimClassQualifiers
collection does not contain the item $Expected.CimClass.CimClassQualifiers[1]
. To me it looks like the collection searching code is broken in some way. Looking at this code:
VERBOSE: (.CimInstanceProperties) - $Expected has type Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, $Actual has type Microsoft.Management.Infrastructure.Internal.Data.CimPropertiesCollection, Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, they are both non-null.
VERBOSE: (.CimInstanceProperties) - $Expected is a collection, we will be comparing $Actual to collections.
VERBOSE: (.CimInstanceProperties) - Comparing items in collection, $Expected has lenght 10, $Actual has length 10.
# both collections have 10 items, so we take each item from the collection on the expected
# object and try to find it in the collection on actual
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[0]:
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
# the object is found and this repeats 10 times in the output
# result of the search is equivalence - this is correct because we found an equivalent object in the actual collection
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - Found $Expected[0].
VERBOSE: (.CimInstanceProperties) -
Searching for $Expected[1]:
# we search the collection again for item on index 1 in the expected collection,
VERBOSE: (.CimInstanceProperties) - $Expected is $null, so we are expecting $null.
VERBOSE: (.CimInstanceProperties) EQUIVALENCE - $Actual is equivalent to $null, because it is $null.
# the lines above do not indicate any difference, yet the result is not equivalence
VERBOSE: (.CimInstanceProperties) DIFFERENCE - $Actual does not contain $Expected[1].
VERBOSE: (.CimInstanceProperties) -
Looking at the output I'd say there is error in the way collections are compared. All the items in the collection evaluate to $null, (might be fine if the collection is actually a collection of 10 $null objects), but we don't stop after finding the first item (that seems like the first error), and I think internally I am keeping note of what I already found, so maybe there are no items left for subsequent matches. Or something like that. Need to find a simpler repro for this problem.
# works
Assert-Equivalent -Actual @($null,$null) -Expected @($null,$null) -Verbose
# throws 🙀
Assert-Equivalent -Actual @($null,$null,$null) -Expected @($null,$null,$null) -Verbose
@DarkLite1 see above. :)
@DarkLite1 @gerane Okay two bugs were there 1) When comparing collections we go through each item in Expected and compare it for equivalence with every item in Actual. When the item is found, we take note of the index in actual so we dont compare them further. This way we are able to compare a: (1,1,2) to e:(1,1,2) as equivalent, but a: (1,1,2), e:(1,2,2) as not equivalent. Without taking the already matched items out of consideration we would be linking one item from expected to multiple items in actual, or vice versa. - but in the loop where this was happening it did not return right after a match was found, so every item in the collection was marked as taken, and none were left for the next iteration. Making the assertion report non-equivalence even though the collections are equivalent. To solve this I simply break out of the loop as soon as I find an item.
1) Now you might ask why ($null, $null) did not fail then? There was another bug. When deciding whether or not the collections are equivalent I we look at the collection of items that were not found, but in case we did not find a single null, we cast @($null) to bool which is false, so it seems that all items were found (0 items were not found), which is not true. so instead of depending on the rules of coalescing to bool I am taking note that there is some difference when the branch of logic is reached, which results in ($null, $null) failng "correctly" when the above bug is present.
@DarkLite1 The error was not limited to your instance of cim class, I could simulate the same problem with Assert-Equivalent @(Get-CimClass Win32_ComputerSystem) @(Get-CimClass Win32_ComputerSystem) -Verbose
which reported error before, but now correctly considers the objects equivalent.
First of all, thank you for this wonderful module. We use the CmdLet
Assert-Equivalent
very often to compare objects which saves us a lot of time.However, recently I stumbled upon something strange with regards to file/folder quota limits. Consider this code:
Then this code:
I don't think there is something wrong with your function, but the error message is so long that it becomes unreadable. In short, it says they are not equal although a
Get
should not change anything but apparentlyAssert-Equivalent
does see a difference somewhere. And I can 't seem to find what it is or how to work around it.Error message:
After Summary there are two pages of red text. But all of the above seems equal to me. When checking
Compare-Object $Actual $Expected -IncludeEqual
they are equal too. So maybeAssert-Equivalent
picks something up on a far deeper level?