Выбор объекта с Out-GridView - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю инструмент для нашей справочной службы, чтобы копировать частые комментарии разрешения, которые они могут использовать при разрешении заявок. В настоящее время у меня есть:

Get-ChildItem ".\FileStore" | Out-GridView -PassThru -Title "Quick Notes" | Get-Content | Set-Clipboard

Что выводит что-то похожее (но в GridView):

Mode                LastWriteTime         Length Name                                                                                                                                          
----                -------------         ------ ----                                                                                                                                          
-a----       15/11/2018     14:38             14 1.txt                                                                                                                                         
-a----       15/11/2018     14:39             14 2.txt                                                                                                                                         
-a----       15/11/2018     14:39             14 3.txt                                                                                                                                         
-a----       15/11/2018     14:39             14 4.txt 

Я просто хочу получить вывод столбца Name , однако я не уверен, как этого добиться. Я пробовал Select, Select-Object и Format-Table, которые не работают, так как я получаю следующее:

Get-Content : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of 
the parameters that take pipeline input.

Можно ли вывести только столбец Имя в GridView?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Чтобы разрешить Get-Content найти файл, вам нужно выбрать больше, чем просто Name, потому что Get-Content не может интерпретировать свойство Name.У него нет соответствующего параметра.Лучше всего выбрать PSPath свойство, которое содержит полный путь PowerShell?и будет соответствовать LiteralPath параметру Get-Content командлета.

К сожалению, Out-GridView не имеет прямого способа указать, какие свойства отображать, но использует стандартный механизм PowerShell для их выбора.Таким образом, мы можем использовать его вместо этого.Для этого вам нужно прикрепить MemberSet свойство PSStandardMembers с набором свойств DefaultDisplayPropertySet, в котором указано, какие свойства отображать по умолчанию.

Get-ChildItem ".\FileStore" |
Select-Object Name, PSPath |
Add-Member -MemberType MemberSet `
           -Name PSStandardMembers `
           -Value ([System.Management.Automation.PSPropertySet]::new(
                      'DefaultDisplayPropertySet',
                      [string[]]('Name')
                  )) `
           -PassThru |
Out-GridView -PassThru -Title "Quick Notes" |
Get-Content | Set-Clipboard
0 голосов
/ 15 ноября 2018

Это очень похоже на мой ответ на удаленный вопрос от пользователя Адам , частично всплывающий в последующем вопросе

Мой ответ (с другим путем) был такой:

Get-ChildItem -Path ".\FileStore" |
  Select-Object Name,FullName |
    Out-GridView -PassThru -Title "Quick Notes"|
      ForEach-Object{Get-Content $_.Fullname | Set-Clipboard -Append}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...