在PowerShell 3.0增加了许多新语句功能同时也简化了许多语法功能,这里最为明显也的就是Foreach-Object与Where-Object了。在V3中省略了“$_”与“{}”的作用,我们通过如下几个简短的小例子说明:
通常我们使用Where-Object或Where(别名)来筛选我们想要的数据都会通过管道传递过来的对象做筛选,如下命令,我们会用到“$_” 这个对象初始功能:
Get-Process|Where-Object{$_.name -like "notepad"}
但是到了PowerShell 3.0中完全不需要这样做了,语句将变的更为简单:
Get-Process|Where name -like "notepad"
在Foreach中也同样如此:
"Hello", "World" | ForEach-Object PadRight 10 "-"
对于今后的PowerShell初学者而言,命令变的更为简单了,但对于从PowerShell 1.0一路走来的人来说不免有点不习惯,好在的是以往的使用方法依然兼容。
那么为什么要改变呢,我从一些公开文章中发现PowerShell Team是希望PowerShell Cmdlet更加接近所谓的command自然命令形态,而不是作为一种脚本语言的语法形态所存在。所以才有了现在这样的改变。