繁体   English   中英

无法使Out-GridView显示两个对象

[英]Can't get Out-GridView to display two objects

我有两个对象$ A和$ B,每个对象都包含CSV导入。 在这两个对象中,存在共享相同属性名称( DisplayNameLoginName )的两列。 首先,我想将它们组合在一起,并在脚本中的某些时候将它们通过管道传递到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 ,它将向我显示两列DisplayNamesLoginNames但是所有值都将在数组内,因此输出将仅显示一行。

然后,我尝试将两个数组都转换为字符串,如下所示:

$combined = [pscustomobject] @{
DisplayNames = ($displayNames | Out-String)
LoginNames = ($loginNames | Out-String)
}

这次,我快到了。 实际上, Out-GridView在两列中显示了展开的值。 不幸的是,无法再用鼠标选择它们。

看起来是这样的:

在此处输入图片说明

我应该怎么做?

这可能对您有用:

$displayNames = @('aaa','bbb','ccc'); 
$loginNames=@('xxx','yyy','zzz'); 
($displayNames | select @{n='NameType';e={'display'}},@{n='Name';e={$_}}) + 
($loginNames | select @{n='NameType';e={'login'}},@{n='Name';e={$_}}) | 
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM