2016-10-28 3 views
2

Попытка выяснить, как заставить Powershell отображать сведения о заголовках последующих запросов к одному и тому же пути каталога.Powershell Get-ChildItem - Отсутствует заголовок при последующих вызовах на тот же путь

Вот упрощенный пример того, что я пытаюсь сделать, обратите внимание, что второй вызов Get-ChildItem не отображает детали заголовка (предположительно потому, что он знает его уже называли ранее в том же ScriptBlock):

PS C:\TEMP\foo> $path="c:\temp\foo";Get-ChildItem -Path $path;Write-Output "Delete something and display directory contents again...";del $path\*5*;Get-ChildItem -Path $path 

Directory: C:\temp\foo 

Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   9/21/2016 9:54 PM   16 File1.txt 
-a---   9/21/2016 9:54 PM   16 File2.txt 
-a---   9/21/2016 9:54 PM   16 File3.txt 
-a---   9/21/2016 9:54 PM   16 File4.txt 
-a---   9/21/2016 9:54 PM   16 File5.txt 

Delete something and display directory contents again... 

-a---   9/21/2016 9:54 PM   16 File1.txt 
-a---   9/21/2016 9:54 PM   16 File2.txt 
-a---   9/21/2016 9:54 PM   16 File3.txt 
-a---   9/21/2016 9:54 PM   16 File4.txt 

Это поведение по умолчанию, если один и тот же путь ссылается более одного раза. Я обнаружил, что второй заголовок будет генерироваться всякий раз, когда другой вызов предоставляется во втором вызове Get-ChildItem, но никогда, когда один и тот же путь используется более одного раза.

Любые идеи о том, как заставить второй заголовок отображаться как первый, сохраняя при этом оба этих вызова в одном скриптблоке?

Спасибо!

+3

'Get-ChildItem -Path $ пути | Out-Host' – PetSerAl

+1

Возможный дубликат [Как заставить подразумеваемую таблицу форматирования PowerShell повторять заголовки для повторного вывода?] (Http://stackoverflow.com/questions/38976213/how-to-force-implied-powershell-format- table-to-repeat-headers-for-repeat-outp) – TessellatingHeckler

+0

@PetSerAl Вы можете оставлять этот комментарий в качестве ответа. Может быть полезным для других пользователей. – Venkatakrishnan

ответ

0
$path="c:\temp\data"; 

    Get-ChildItem -Path $path 
    Write-host "Delete something and display directory contents again..." 
    del $path\*5* -Recurse 
    Get-ChildItem -Path $path 
+0

Мне нужно выполнить это как строку в скриптблоке не как отдельные команды. Если вы выполните его как таковое, вы увидите, что такое же поведение сохраняется. $ path = "c: \ temp \ data"; Get-ChildItem -Path $ path; Write-host "Удалить что-то и отобразить содержимое каталога снова ..."; del $ path \ * 5 * -Recurse; Get- ChildItem -Path $ path – electrocreative

0

Добавить format-tableget-childitem после, он всегда будет отображать результат в виде таблицы с заголовками

Get-childitem $path | format-table 
+0

'Format-Table' сам по себе приводит к ошибке: ' out-lineoutput: объект типа «Microsoft.PowerShell.Commands.Internal.Format.FormatStartData» недопустим или находится в правильной последовательности. .. вызвано командой «format-table», конфликтующей с форматированием по умолчанию' Я могу обойти это, выполнив команду «Out-String», однако решение «Out-Host» от @PetSerAl более прямое с тем же результатом : $ path = "c: \ temp \ foo"; Get-ChildItem -Path $ path; Write-Output "Удалить что-то и отобразить содержимое каталога снова ..."; del $ path * 5 *; Get-ChildItem -Path $ path | Формат-таблица | Out-String, – electrocreative