PowerShell 更加懒惰
dir c:\work\ -file | where {$_.length -gt 100KB} | Select Name,
@{Name="Modified";Expression={$_.lastWritetime}},
@{Name="SizeKB";Expression={[math]::Round($_.length/1KB,2)}} |
Sort SizeKB -Descending
如果您阅读了上一篇文章,您已经知道我可以使用别名属性快捷方式。但您也可以定义其他类型的属性。假设我经常想要获取以 KB 为单位的文件大小,并且始终将 Select-Object 与自定义哈希表一起使用是相当乏味的。相反,我可以使用 Update-TypeData 来做到这一点:
Update-TypeData -TypeName System.IO.FileInfo -MemberType ScriptProperty -MemberName SizeKB -Value {[math]::Round($this.length/1KB,2)}
定义 ScriptProperty 时,使用 $this 变量而不是 $_。使用我之前创建的别名,我的命令现在更容易编写:
PS C:\> dir c:\work\ -file | where {$_.sz -gt 100KB} | Sort SizeKB -Descending | format-table Name,
Modified,SizeKB -AutoSize
Name Modified SizeKB
---- -------- ------
WeeklyProcs.xml 12/27/2013 12:39:52 PM 16660.45
SSCERuntime_x64-ENU.msi 2/11/2010 8:36:32 PM 3567.5
SSCERuntime_x86-ENU.msi 2/11/2010 8:36:18 PM 3090
test.exe 1/14/2014 10:43:15 AM 540.54
psight.csv 3/4/2014 10:12:46 AM 508.31
WMIExplorer.exe 5/21/2012 1:32:15 PM 452
test2.exe 5/4/1999 4:33:24 PM 270.27
test2.ext 5/4/1999 4:33:24 PM 270.27
PS4NewFeatures-m3.camproj 3/29/2014 7:13:43 PM 255.65
du.exe 5/29/2014 11:42:40 AM 218.19
chi-hvr2-health-full.htm 1/23/2014 10:01:27 AM 127.96
windowtime.xml 6/16/2014 1:32:03 PM 102.17
通过别名,我可以在 PowerShell 表达式中的任何位置使用它们。让我再给大家举一个例子:
Update-TypeData -TypeName Microsoft.PowerShell.Commands.GenericMeasureInfo -MemberType ScriptProperty -MemberName SumKB -Value {[math]::Round($this.sum/1KB,2)} -Force
Update-TypeData -TypeName Microsoft.PowerShell.Commands.GenericMeasureInfo -MemberType ScriptProperty -MemberName SumMB -Value {[math]::Round($this.sum/1MB,2)} -Force
Update-TypeData -TypeName Microsoft.PowerShell.Commands.GenericMeasureInfo -MemberType ScriptProperty -MemberName SumGB -Value {[math]::Round($this.sum/1GB,2)} -Force
我经常需要获取某物的总价值,但通常我需要不同的格式,例如 MB 或 GB。现在我有了。
PS C:\> dir c:\work\*.xml | where {$_.sz -gt 1kb} | measure -Property Size -Sum
Count : 7
Average :
Sum : 17199422
Maximum :
Minimum :
Property : Size
SumKB : 16796.31
SumMB : 16.4
SumGB : 0.02
PS C:\> (ps chrome | measure ws -sum).SumGB
1.23
这绝对可以节省一些打字时间。我可能也应该对最大和最小属性做类似的事情。
那么,您经常输入什么?这是你可以变得更聪明的事情吗?我希望你能分享,这样我就可以利用你的懒惰,我的意思是,效率!
