I am trying to query for various physical disk health information.
I have two queries that each return separate information about PhysicalDisks.
>Get-PhysicalDisk | Select-Object DeviceId, FriendlyName, Model, SerialNumber, Usage, HealthStatus, CanPool, CannotPoolReason | Format-Table
| DeviceId | Model | SerialNumber | FriendlyName | Usage | HealthStatus | CanPool | CannotPoolReason |
|---|---|---|---|---|---|---|---|
| 0 | WDC WD80EDAZ-11T | VGJKAJEG | ATA WDC WD80EDAZ-11T | Auto-Select | Healthy | False | In a Pool |
| 1 | WDC WD40EFRX-68N | WD-WCC7K6NE2J5J | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | True | |
| 2 | WDC WD40EFRX-68N | WD-WCC7K5RYNVZD | ATA WDC WD40EFRX-68N | Hot Spare | Healthy | False | In a Pool |
| 3 | WDC WD80EDAZ-11T | VGGDU8GG | ATA WDC WD80EDAZ-11T | Auto-Select | Healthy | False | In a Pool |
| 4 | WDC WD80EDAZ-11T | VGKE7HJG | ATA WDC WD80EDAZ-11T | Auto-Select | Healthy | False | In a Pool |
| 5 | Samsung SSD 970 EVO 500GB | 0025_385A_9150_212F. | Samsung SSD 970 EVO 500GB | Auto-Select | Healthy | True | |
| 6 | WDC WD40EFRX-68N | WD-WCC7K5KP57ZJ | ATA WDC WD40EFRX-68N | Hot Spare | Healthy | False | In a Pool |
| 7 | WDC WD40EFRX-68N | WD-WCC7K1URKJV5 | ATA WDC WD40EFRX-68N | Hot Spare | Healthy | False | In a Pool |
| 8 | WDC WD40EFRX-68N | WD-WCC7K1TZUVDD | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | False | In a Pool |
| 9 | Elements 25A3 | 2SGDZYXJ | WD Elements 25A3 | Auto-Select | Healthy | False | Insufficient Capacity |
| 10 | WDC WD40EFRX-68N | WD-WCC7K6HJV122 | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | False | In a Pool |
| 11 | WDC WD40EFRX-68N | WD-WCC7K1PHSSE7 | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | False | In a Pool |
| 12 | WDC WD40EFRX-68N | WD-WCC7K5XL728J | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | False | In a Pool |
| 13 | WDC WD40EFRX-68N | WD-WCC7K3DNAYHT | ATA WDC WD40EFRX-68N | Auto-Select | Healthy | False | In a Pool |
And then there's the SMART attributes of the same physical disks:
>Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object Number, DeviceId, PowerOnHours, ReadErrorsTotal, Temperature, ReadLatencyMax, WriteLatencyMax | Format-Table
| DeviceId | PowerOnHours | ReadErrorsTotal | Temperature | ReadLatencyMax | WriteLatencyMax |
|---|---|---|---|---|---|
| 4 | 40340 | 0 | 28 | 155 | 283 |
| 6 | 25774 | 0 | 29 | 712 | 226 |
| 8 | 17383 | 0 | 29 | 190 | 163 |
| 12 | 36 | 489 | 287 | ||
| 13 | 1486 | 0 | 31 | 19376 | 0 |
| 5 | 25781 | 0 | 31 | 699 | 208 |
| 0 | 28385 | 0 | 27 | 1 | |
| 1 | 35341 | 0 | 28 | 197 | 168 |
| 3 | 41524 | 0 | 27 | 177 | 193 |
| 11 | 13743 | 0 | 38 | 242 | 148 |
| 2 | 33553 | 0 | 28 | 365 | 422 |
| 10 | 14000 | 0 | 34 | 239 | 418 |
| 9 | 14000 | 0 | 36 | 234 | 368 |
| 7 | 25746 | 0 | 28 | 4 |
Well now i want these merged into single-rows:
| DeviceId | FriendlyName | Model | SerialNumber | Usage | HealthStatus | CanPool | CannotPoolReason | PowerOnHours | ReadErrorsTotal | Temperature | ReadLatencyMax | WriteLatencyMax |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K6NE2J5J | Auto-Select | Healthy | TRUE | 28385 | 0 | 27 | 1 | ||
| 1 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K1TZUVDD | Auto-Select | Healthy | FALSE | In a Pool | 35341 | 0 | 28 | 197 | 168 |
| 2 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K6HJV122 | Auto-Select | Healthy | FALSE | In a Pool | 33553 | 0 | 28 | 365 | 422 |
| 3 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K5KP57ZJ | Hot Spare | Healthy | FALSE | In a Pool | 41524 | 0 | 27 | 177 | 193 |
| 4 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K1URKJV5 | Hot Spare | Healthy | FALSE | In a Pool | 40340 | 0 | 28 | 155 | 283 |
| 5 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K3DNAYHT | Auto-Select | Healthy | FALSE | In a Pool | 25781 | 0 | 31 | 699 | 208 |
| 6 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K1PHSSE7 | Auto-Select | Healthy | FALSE | In a Pool | 25774 | 0 | 29 | 712 | 226 |
| 7 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K5RYNVZD | Hot Spare | Healthy | FALSE | In a Pool | 25746 | 0 | 28 | 4 | |
| 8 | ATA WDC WD40EFRX-68N | WDC WD40EFRX-68N | WD-WCC7K5XL728J | Auto-Select | Healthy | FALSE | In a Pool | 17383 | 0 | 29 | 190 | 163 |
| 9 | ATA WDC WD80EDAZ-11T | WDC WD80EDAZ-11T | VGGDU8GG | Auto-Select | Healthy | FALSE | In a Pool | 14000 | 0 | 36 | 234 | 368 |
| 10 | ATA WDC WD80EDAZ-11T | WDC WD80EDAZ-11T | VGJKAJEG | Auto-Select | Healthy | FALSE | In a Pool | 14000 | 0 | 34 | 239 | 418 |
| 11 | ATA WDC WD80EDAZ-11T | WDC WD80EDAZ-11T | VGKE7HJG | Auto-Select | Healthy | FALSE | In a Pool | 13743 | 0 | 38 | 242 | 148 |
| 12 | Samsung SSD 970 EVO 500GB | Samsung SSD 970 EVO 500GB | 0025_385A_9150_212F. | Auto-Select | Healthy | TRUE | 36 | 489 | 287 | |||
| 13 | WD Elements 25A3 | Elements 25A3 | 2SGDZYXJ | Auto-Select | Healthy | FALSE | Insufficient Capacity | 1486 | 0 | 31 | 19376 | 0 |
In SQL Server relational databases that would be an INNER JOIN on DeviceId.
How can i combine these two results set into one set?