# Compare arrays to get those that don't match

**URL:** <https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343>\
**Category:** PowerShell Help\
**Created:** [May 7, 2020, 10:58am UTC](https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343 "2020-05-07T10:58:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![firmbyte](https://avatars.discourse-cdn.com/v4/letter/f/e68b1a/32.png) [@firmbyte](https://forums.powershell.org/u/firmbyte)\
**Post date:** [May 7, 2020, 10:58am UTC](https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343/1 "2020-05-07T10:58:55Z")

</div>

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
```

&nbsp;

eg: $Servers

```
Node Instance
---- --------
SQNDE-P03 PROD03
SQNDE-P02 PROD05
SQNDE-P01 DPROD04
SQNDE-P01 COMMAND
```

---

<div class="post-metadata">

**Author:** ![rob-simmers](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.powershell.org/rob-simmers/32/1010_2.png) [@rob-simmers](https://forums.powershell.org/u/rob-simmers)\
**Post date:** [May 7, 2020, 11:14am UTC](https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343/2 "2020-05-07T11:14:04Z")

</div>

> [@](#):
>
> I’ve tried Compare-Object and also tried

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 <=
```

---

<div class="post-metadata">

**Author:** ![firmbyte](https://avatars.discourse-cdn.com/v4/letter/f/e68b1a/32.png) [@firmbyte](https://forums.powershell.org/u/firmbyte)\
**Post date:** [May 7, 2020, 11:51am UTC](https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343/3 "2020-05-07T11:51:00Z")

</div>

I hadn’t specified properties, doing so gives the result expected.

Thanks for your help!

&nbsp;

---

<div class="post-metadata">

**Author:** ![dotnVo](https://avatars.discourse-cdn.com/v4/letter/d/4af34b/32.png) [@dotnVo](https://forums.powershell.org/u/dotnVo)\
**Post date:** [May 16, 2024, 8:29pm UTC](https://forums.powershell.org/t/compare-arrays-to-get-those-that-dont-match/14343/4 "2024-05-16T20:29:43Z")

</div>


