[英]Can't get Out-GridView to display two objects
我有两个对象$ A和$ B,每个对象都包含CSV导入。 在这两个对象中,存在共享相同属性名称( DisplayName
和LoginName
)的两列。 首先,我想将它们组合在一起,并在脚本中的某些时候将它们通过管道传递到Out-GridView
。
不幸的是,我似乎找不到办法。
$A = Import-csv -Path "C:\Users\[...]" | Where-Object {$_.LoginName -like "*[...]*"} | Sort DisplayName
$B = Import-csv -Path "C:\Users\[...]" | Where-Object {$_.LoginName -like "*[...]*"} | Sort DisplayName
$displayNames = ($A.DisplayName) + ($B.DisplayName)
$loginNames = ($A.UserPrincipalName) + ($B.LoginName)
现在,此时我不能同时使用$displayNames
和$loginNames
并将它们同时通过管道传输到Out-GridView
。
我正在考虑合并两个对象,但是执行$displayNames + $loginNames
导致一个对象不维护这两个属性。
然后我想我可以像这样创建一个pscustomobject:
$combined = [pscustomobject] @{
DisplayNames = $displayNames
LoginNames = $loginNames
}
但是,如果将其通过管道传输到Out-GridView
,它将向我显示两列DisplayNames
和LoginNames
但是所有值都将在数组内,因此输出将仅显示一行。
然后,我尝试将两个数组都转换为字符串,如下所示:
$combined = [pscustomobject] @{
DisplayNames = ($displayNames | Out-String)
LoginNames = ($loginNames | Out-String)
}
这次,我快到了。 实际上, Out-GridView
在两列中显示了展开的值。 不幸的是,无法再用鼠标选择它们。
看起来是这样的:
我应该怎么做?
而不是使用两个数组以及将它们排序并试图使其保持同步的所有废话,再加上将它们联接回以进行输出的工作,而是使用psobject,它可以将第二个文件的结果附加到第一个文件。 像这样:
$results = Import-csv -Path "C:\Users\[...]" | Where-Object {$_.LoginName -like "*[...]*"} | % {
New-Object psobject -Property @{
DisplayName = $_.DisplayName
LoginName = $_.UserPrincipalName
}
}
$results += Import-csv -Path "C:\Users\[...]" | Where-Object {$_.LoginName -like "*[...]*"} | % {
New-Object psobject -Property @{
DisplayName = $_.DisplayName
LoginName = $_.LoginName
}
}
$results | Out-GridView
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.