如何解析文本格式的Powershell语法?

前端之家收集整理的这篇文章主要介绍了如何解析文本格式的Powershell语法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我找到了 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/

有关字符串格式的更多详细信息

猜你在找的HTML相关文章