【发布时间】:2021-12-19 03:17:53
【问题描述】:
我正在尝试在加载 CSV 时进行一些检查,并通知用户发现了哪些额外的标题以及哪些标题仍然缺失。 $headers_required 将被硬编码,$headers_loaded 将由 Import-CSV 填充 目标是用与另一个数组的差异填充这两个数组,例如 Unix 中的 diff。
$headers_required=@( `
'Path', `
'GivenName', `
'Name', `
'EmailAddress', `
'sAMAccountName', `
'psw-temp', `
'Path', `
'ChangePasswordAtLogon' `
)
$headers_loaded=@( `
'Path', `
'GivenName', `
'Name', `
'PhoneNumber', `
'PreferredFilm', `
'sAMAccountName', `
'psw-temp', `
'Path', `
'ChangePasswordAtLogon', `
'BankAccount' `
)
最终我想拥有
$extra_headers_not_nedeed=@('BankAccount', 'PhoneNumber', 'PreferredFilm')
$missing_headers=@('EmailAddress')
我可以用这种方式过滤它们
$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 '=>'
我会过滤它们
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==>}
-
我怎样才能得到上面指定的普通数组而不是结构化对象?我试过 $missing_headers['InputObject'] 但它返回整个对象而不是 'EmailAddress'
-
是否有更紧凑的方式(除了符号)来获得相同的结果?
TIA
【问题讨论】:
标签: arrays powershell