I have following arrays in Powershell that I want to compare:
Array1:
Srvname Loginname sid passwordhash
Srv1 L1 0xdbc 0xfsfhdfh
Srv2 L2 0xdbe 0xfsfhdfe
Srv3 L3 0xdbc 0xfsfhdfd
Array2:
Srvname Loginname sid passwordhash
Srv1 L1 0xdbd 0xfsfhdfh
Srv2 L2 0xdbe 0xfsfhdfh
Srv3 L3 0xdba 0xfsfhdfb
It should give output only when there is either sid,password or both mismatch of the same loginname. For example in above case it should give output as below:
Srvname Loginname Srvname2 Loginname2 Mismatch
Srv1 L1 Srv1 L1 sid
Srv2 L2 Srv2 L2 password
Srv3 L3 Srv3 L3 sid and password
If someone can assist with the code that would be greatly appreciated.
Tried below but it didn't work:
$output += $T2 | ForEach-Object {
$r = $_
$T1 | Where-Object { $_.LoginName -eq $r.LoginName -and ($_.SId -ne $r.SId -or $_.PasswordHash -ne $r.PasswordHash) } |
Select-Object @{Name = 'SrvName'; Expression = { $_.srvname }}, $_.LoginName, @{Name = 'SrvName2'; Expression = { $r.srvname } }, @{Name = 'LogiName2'; Expression = { $r.LoginName }}, @{Name = 'Mismatch'; Expression = { 'sid or password' }}
}