I'm trying to do some checks when loading a CSV and inform the user of what extra headers were found and which ones are still missing. $headers_required will be hardcoded, $headers_loaded will be populated by Import-CSV The goal is to populate the two arrays with the differences from the other array, like diff in Unix.
$headers_required=@( `
'Path', `
'GivenName', `
'Name', `
'EmailAddress', `
'sAMAccountName', `
'psw-temp', `
'Path', `
'ChangePasswordAtLogon' `
)
$headers_loaded=@( `
'Path', `
'GivenName', `
'Name', `
'PhoneNumber', `
'PreferredFilm', `
'sAMAccountName', `
'psw-temp', `
'Path', `
'ChangePasswordAtLogon', `
'BankAccount' `
)
Eventually I would like to have
$extra_headers_not_nedeed=@('BankAccount', 'PhoneNumber', 'PreferredFilm')
$missing_headers=@('EmailAddress')
I can filter them in this way
$extra_headers_not_nedeed=Compare-Object ($headers_required|Sort-Object) ($headers_loaded|Sort-Object) | Where SideIndicator -eq '<='
$missing_headers=Compare-Object ($headers_required|Sort-Object) ($headers_loaded|Sort-Object) | Where SideIndicator -eq '=>'
And I do filter them
PS C:\> $missing_headers|Write-host
@{InputObject=EmailAddress; SideIndicator=<=}
PS C:\> $extra_headers_not_needed|Write-host
@{InputObject=BankAccount; SideIndicator==>}
@{InputObject=PhoneNumber; SideIndicator==>}
@{InputObject=PreferedFilm; SideIndicator==>}
how can I get normal arrays as specified above instead of a structured object? I tried $missing_headers['InputObject'] but it returns the whole object instead of 'EmailAddress'
is a there a more compact way (aside symbols) to get to the same result?
TIA