【问题标题】:Write output in powershell在 powershell 中写入输出
【发布时间】:2016-02-10 23:35:46
【问题描述】:

我正在使用 get-childitem 来获取文件名、位置和大小。

$agh=get-childitem E:\Documents\ -recurse | % {Write-output $_.FullName $_.length}

我得到如下输出。

E:\Documents\Application Remediation - 查找内容.pptx
55956
E:\Documents\更改所需时间的估计.xlsx
10509

我在一行中获取文件名,在新行中获取大小。

我期待如下输出

File name Location Size
Application Remediation - What to look for.pptx E:\Documents\ 55956 Estimation of time required for changes.xlsx E:\Documents\ 10509

在如何格式化 foreach 循环中的写入输出以在变量中重定向方面需要帮助。

我将在邮件正文中使用此变量来共享目录的详细信息作为电子邮件内容。

谢谢。

【问题讨论】:

  • get-childitem c:\temp\ -recurse | select FullName, length | ft 获取表格格式。
  • get-childitem c:\temp\ -recurse | select Name, Directory, length | ft 将获得您指定的三个项目。

标签: powershell


【解决方案1】:

将输出传送到 SELECT 语句以获取名称、路径和大小,然后传送到 Format-Table:

$agh = get-childitem E:\Documents\ -recurse | select Name, Directory, length | format-table

【讨论】:

  • 如果这不是您需要的,您需要编辑问题以提供更具体的信息。如果电子邮件被呈现为 HTML,您可能需要将输出包含在
     标记中,以便它是单型的并且所有的空格都将被呈现。
  • DirectoryInfo 对象没有 Directory 属性。并且不需要select,可以直接要求Format-Table显示具体属性:ft @{l='File name';e='Name'},@{l='Location';e={[IO.Path]::GetDirectoryName($_.FullName)}},@{l='Size';e='Length'}
  • 你确定它适用于DirectoryInfo(不是FileInfo)对象吗?
  • 你说得对——我没有仔细阅读它——它没有用于目录。很可能他不希望在输出中列出目录对象,因为目录中的任何文件都会被列出。
  • 您好 TonyHinkle 和 @PetSerAl,您的两个命令都帮助我获得了期望的输出。感谢您分享相同的内容。现在对我来说另一个挑战是文件名和路径太长而无法放入表格列中。因此,当我收到包含长文件名信息的电子邮件时,以三个点(...)结尾,表示跳过了文本。我尝试使用 -autosize 但没有帮助。我想我必须使用格式列表而不是格式表。如果您对格式表有任何建议,请分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 2020-04-06
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多