我找到了
a PowerShell script,我认为我可以适应我的目的.
它包含格式化输出的这一行:
$largeSizefiles = get-ChildItem -path $filesLocation -include $Extension -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length | Select-Object Name,@{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
关键部分似乎是这样的:
Select-Object Name,@{Name="Path";Expression={$_.directory}} -first $filesLimit
我已经阅读了关于Select-Object的ss64.com教程,但是我没有找到任何解释@ {…..}形式的表达式如何格式化文本的内容.
@运算符上的ss64.com页面以@(…)格式显示,带有parens,而不是大括号.
Name : RPI-Image-1-Copy.img Size In MB : 29,477 Path : D:\VirtualDriveShare LastWriteTime : 8/18/2015 6:27:51 PM
我熟悉一些编程语言,但这对我来说并不明显,我也没有在网上找到任何明确的解释.谁能指点我一个好的教程?
解决方法
Select-Object可以为每个项使用Header / Values的哈希表.在这个例子中:
Select-Object Name,@{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}} ...
脚本正在选择Name,然后选择“以KB为单位的名称”,该名称是从当前管道对象的Length参数派生的.
通过首先将其除以1024然后使用{0:N0}来显示它进一步格式化.
Powershell使用.Net字符串格式语法进行显示 – 在这种情况下{0:N0}转换为:
// N or n (Number): It represent how many decimal places of zeros to show. String.Format("{0:N4}",pos); //”10.0000″
您可能想看看Kathy Kam的Format 101和Format 102文章:
> https://blogs.msdn.microsoft.com/kathykam/2006/03/29/net-format-string-101/
> https://blogs.msdn.microsoft.com/kathykam/2006/09/29/net-format-string-102-datetime-format-string/
有关字符串格式的更多详细信息