我见过提到的改进的PowerShell 3.0语法,但没有一个例子,它将如何看起来像?PowerShell 3.0应该有更清晰的语法,它看起来像什么?
回答
Powershell已经有一个非常干净的语法,所以没有太多需要改进。
一个新此外,我做喜欢的是Hash Table as objects
,在那里你可以通过hastable与它的属性创建对象:
[<ClassName>]$Variable = @{<Property>=<Value>;<Property>=<Value>}
所以创建自定义对象的更新,更简洁的方式是:
$obj = [PSCustomObject]@{a=1; b=2; c=3; d=4}
重定向已经加强。除了正常(流水线)和错误外,现在您还可以进行冗余,调试和警告,因此您可以执行重定向,如5>&1
您可以使用$PSDefaultParameterValues
首选变量为cmdlet设置默认参数值。
有新[ordered]
加速器创建有序hastable(字典):
$a = [ordered]@{a=1;b=2;d=3;c=4}
从这里SO另一个答案,我意识到,-in
在PowerShell中3.0是新的:
所以你做一些像1 -in 1,2,3
。以前我们只有-contains
的cmdlet:
您可以Update-Help
cmdlet的更新的帮助。有与网络相关的cmdlet,如Invoke- WebRequest
。您还可以使用ConverTo-JSON
和ConvertFrom-JSON
cmdlet处理JSON。
“hastable(dictionary)”:我认为'dictionary'和'hashtable'是的代名词。也许我对Python中的字典感到困惑,但是字典不会强加顺序,是吗?你能澄清一下吗? –
下面是一个例子:
dir | where length -lt 10
3.0之前,它会一直
dir | where {$_.length -lt 10}
编辑:另一个例子,这次用foreach对象
dir | foreach-object length
+1 - 之前没有注意到这一点。 – manojlds
我同意提交者。这是我期望看到的一些文章,因为它使脚本更容易阅读。不过,我不认为我喜欢它。 –
许多常见的*-Object
cmdlet都使用多个参数集来完成简化的语法。看看这个在V3:
C:\PS> Get-Command Where-Object -Syntax
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] [-EQ] [<CommonParameters>]
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CGT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -LT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CEQ [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -GT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -GE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CGE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -LE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Like [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Match [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Contains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -In [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Is [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -IsNot [<CommonParameters>]
注意:检查出新的运营商-NotIn
和-In
如:
C:\PS> 1 -In 1..5
C:\PS> 10 -NotIn 1..5
所以简化语法是“共同”的情况下很好,但看出来的你可以很容易地掉入锋利的岩石和熔岩中,例如:
C:\PS> Get-ChildItem | Where LastWriteTime.Year -eq 2010
这将返回什么更糟糕的,没有错误,所以你想结果集是“正确”的空当,其实这句法只是不为你所期望的工作。也就是说,您无法访问属性的属性。在上面,PowerShell寻找一个名为LastWriteTime.Year
的属性,该属性不存在。
另请注意,作为简化语法的一部分,您现在可以使用$PSItem
代替$_
,以防您或您编写脚本的人对$_
产生某种过敏反应。 :-)
虽然这不一定是联系在一起的简化的语法我发现,它简化了我的生活,我喜欢它:
C:\PS> Get-ChildItem -Directory
C:\PS> Get-ChildItem -File
C:\PS> dir -ad
C:\PS> Get-ChildItem -Attributes System+Hidden+Directory+!Archive
- 1. 什么是看起来像方法调用的ruby/rails语法?
- 2. 为什么我的TabWidget看起来不像它应该的样子?
- 3. 这是我的页面应该看起来像什么?
- 4. 为什么我的android stuido看起来不像应该?
- 5. 当调用DocumentSummaryInformation.setHeadingPair值应该看起来像什么
- 6. 应该将Heroku连接到GitHub回购看起来像什么?
- 7. iOS应用内购买收据:它看起来像什么?
- 8. 页面看起来大于它应该
- 9. SQL语法错误。看起来像我错过了什么
- 10. IF/VLOOKUP的清晰语法
- 11. 为什么所有的字体在Chrome浏览器中都看起来更清晰?
- 12. continue语句在PowerShell中混乱的,看起来像break语句
- 13. CSS Submit Form看起来不像应该
- 14. SSL语法 - 它看起来如何?
- 15. 帮助做一个大的副图看起来更好,更清晰
- 16. 什么应该正确的GET请求和响应看起来像Node.js
- 17. 自定义404看起来并不像它应该
- 18. AngularJS json多维数组看起来不像它应该是
- 19. lambda语法看起来像这样:()=>
- 20. 我应该使用多大的图像来获得清晰的图像?
- 21. 渲染字体看起来比它应该更大胆
- 22. 它看起来像IE没有画布
- 23. 为什么它看起来像我的androidbutton宽度压缩?
- 24. 有没有更清晰简洁的方式来表达更好的LINQ语句?
- 25. 在WPF中,当追加一个usercontrol到边框时,它看起来不清晰
- 26. 我的JSON字符串应该在我的Action中看起来像什么?
- 27. Windows Forms在Powershell和Powershell ISE中看起来不同。为什么?
- 28. 有什么办法让这个功能看起来更好吗?
- 29. div /按钮看起来应该比1像素更宽
- 30. 目标文件看起来像什么
哪一部分是没有帮助?好像你可以下载它。 http://social.technet.microsoft.com/Forums/en-AU/ITCG/thread/4807949e-58e6-4533-b35d-580d938dfbb2 –