I’ve two arrays: $Servers and $obj, both contain Node and Instance.
How can I get the values in $obj that doesn’t exist in $Servers?
I’ve tried Compare-Object and also tried
$Servers | Where { $Obj -NotContains $}
which gives me the exact opposite of what I want, but when I try $obj | Where { $Servers -NotContains $}
it includes values it should not.
eg: $Obj
Node Instance
---- --------
SQNDE-P03 COMMAND
SQNDE-P03 PROD03
SQNDE-P03 PROD04
SQNDE-P03 PROD05
SQNDE-P02 COMMAND
SQNDE-P02 PROD03
SQNDE-P02 PROD04
SQNDE-P02 PROD05
SQNDE-P01 COMMAND
SQNDE-P01 PROD03
SQNDE-P01 PROD04
SQNDE-P01 PROD05
eg: $Servers
Node Instance
---- --------
SQNDE-P03 PROD03
SQNDE-P02 PROD05
SQNDE-P01 DPROD04
SQNDE-P01 COMMAND
Did you specify the properties with Compare-Object?
$obj = @"
Node,Instance
SQNDE-P03,COMMAND
SQNDE-P03,PROD03
SQNDE-P03,PROD04
SQNDE-P03,PROD05
SQNDE-P02,COMMAND
SQNDE-P02,PROD03
SQNDE-P02,PROD04
SQNDE-P02,PROD05
SQNDE-P01,COMMAND
SQNDE-P01,PROD03
SQNDE-P01,PROD04
SQNDE-P01,PROD05
"@ | ConvertFrom-CSV
$servers = @"
Node,Instance
SQNDE-P03,PROD03
SQNDE-P02,PROD05
SQNDE-P01,DPROD04
SQNDE-P01,COMMAND
"@ | ConvertFrom-CSV
Compare-Object -ReferenceObject $obj -DifferenceObject $servers -Property Node,Instance
Output:
Node Instance SideIndicator
---- -------- -------------
SQNDE-P01 DPROD04 =>
SQNDE-P03 COMMAND <=
SQNDE-P03 PROD04 <=
SQNDE-P03 PROD05 <=
SQNDE-P02 COMMAND <=
SQNDE-P02 PROD03 <=
SQNDE-P02 PROD04 <=
SQNDE-P01 PROD03 <=
SQNDE-P01 PROD04 <=
SQNDE-P01 PROD05 <=
I hadn’t specified properties, doing so gives the result expected.
Thanks for your help!