仅过去 select 个字段到 out-gridview
Past only select fields to out-gridview
我怎样才能只传递一个对象的 selection 字段以显示在 out-gridview 中,但仍然保留整个对象。
例如,我检索了一个对象,它给我:
$listcreds = get-listofcredentials
Id : 03c0e0c0-0951-4698-9ba9-a70508b5467f
IsLocalProtect : True
Name : vsphere.local\Administrator
CurrentUser : False
UserName : vsphere.local\Administrator
UserNameAtNotation : Administrator@vsphere.local
UserNameSlashNotation : vsphere.local\Administrator
UserNameOnly : Administrator
DomainName : vsphere.local
EncryptedPassword : Veeam.Backup.Common.CCodedPassword
在网格视图中,我只想看到名称和 ID。在用户 selects 所需的行之后,我希望再次将结果作为相同类型的对象。
当我使用 select-object 时,
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
我得到了结果,但我现在必须再次搜索原始对象以获取该行的其他属性。
有什么更好的方法来做到这一点?
您需要在 Where-Object
列表中再次找到完整的对象
此答案假定 Id
属性 对于 $listcreds
中的每个项目都是唯一的
$listcreds = get-listofcredentials
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
$selectedcred = $listcreds | Where-Object {$_.Id -eq $selectedcred.Id}
我认为这里没有更好的解决方案。如果性能是一个问题,您可以将 Where-Object
转换为 foreach
,如下所示:
$listcreds = get-listofcredentials
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
foreach ($cred in $listcreds) {
if ($cred.Id -eq $selectedcred.Id) {
$selectedcred = $cred
break
}
}
但是,性能差异可以忽略不计甚至为负。
我怎样才能只传递一个对象的 selection 字段以显示在 out-gridview 中,但仍然保留整个对象。
例如,我检索了一个对象,它给我:
$listcreds = get-listofcredentials
Id : 03c0e0c0-0951-4698-9ba9-a70508b5467f
IsLocalProtect : True
Name : vsphere.local\Administrator
CurrentUser : False
UserName : vsphere.local\Administrator
UserNameAtNotation : Administrator@vsphere.local
UserNameSlashNotation : vsphere.local\Administrator
UserNameOnly : Administrator
DomainName : vsphere.local
EncryptedPassword : Veeam.Backup.Common.CCodedPassword
在网格视图中,我只想看到名称和 ID。在用户 selects 所需的行之后,我希望再次将结果作为相同类型的对象。
当我使用 select-object 时,
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
我得到了结果,但我现在必须再次搜索原始对象以获取该行的其他属性。
有什么更好的方法来做到这一点?
您需要在 Where-Object
此答案假定 Id
属性 对于 $listcreds
$listcreds = get-listofcredentials
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
$selectedcred = $listcreds | Where-Object {$_.Id -eq $selectedcred.Id}
我认为这里没有更好的解决方案。如果性能是一个问题,您可以将 Where-Object
转换为 foreach
,如下所示:
$listcreds = get-listofcredentials
$selectedcred = $listofcredentials | select-object Name, Id | out-gridview -passthru
foreach ($cred in $listcreds) {
if ($cred.Id -eq $selectedcred.Id) {
$selectedcred = $cred
break
}
}
但是,性能差异可以忽略不计甚至为负。