簡體   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