【问题标题】:Powershell Get-ChildItem - Missing header on subsequent calls to same pathPowershell Get-ChildItem - 后续调用相同路径时缺少标头
【发布时间】:2016-10-28 23:37:26
【问题描述】:

试图弄清楚如何让 Powershell 在对同一目录路径的后续请求中显示标头详细信息。

这是我正在尝试做的一个简化示例,请注意第二次调用 Get-ChildItem 不会显示标题详细信息(可能是因为它知道之前已经在同一个脚本块中调用过它):

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 调用中提供了不同的路径,就会生成第二个标头,但不会在多次使用同一路径时生成。

关于如何强制第二个标题像第一个一样显示,同时仍然将这两个调用保持在同一个脚本块中的任何想法?

谢谢!

【问题讨论】:

标签: windows powershell get-childitem


【解决方案1】:
  $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

【讨论】:

  • 我需要将其作为脚本块中的字符串执行,而不是作为单独的命令。如果您这样执行它,您将看到相同的行为仍然存在。 $path="c:\temp\data";Get-ChildItem -Path $path;Write-host "删除一些东西并再次显示目录内容...";del $path*5* -Recurse;Get-ChildItem -Path $路径
【解决方案2】:

get-childitem之后添加format-table,它会始终以带标题的表格格式显示结果

Get-childitem $path | format-table

【讨论】:

  • Format-Table 本身会导致此错误:out-lineoutput : The object of type "Microsoft.PowerShell.Commands.Internal.Format.FormatStartData" is not valid or in correct sequence...caused by "format-table" command conflicting with default formatting 我可以通过管道传递给Out-String 命令来解决此问题,但是@PetSerAl 的Out-Host 解决方案更直接,结果相同: $path="c:\temp\foo";Get-ChildItem -Path $path;Write-Output "删除一些东西并再次显示目录内容...";del $path*5*;Get-ChildItem -Path $路径 |格式表 |外串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多