Powershell:调用.NET函数总是需要括号吗?

时间:2015-08-05 06:14:40

标签: .net function powershell call braces

我知道PowerShell函数调用不需要像C#这样的特定括号,但是当我尝试调用.NET类函数时,似乎总是需要括号,如:

[Int32]::Parse("12")

这是一个语法规则吗?

2 个答案:

答案 0 :(得分:2)

一般来说,引用.NET类型的方法是将typename放在方括号中,例如'' -is [string]。虽然'' -is 'string'也可以正常工作,但我发现在使用方括号时更容易判断是否引用了.NET类型。

您引用静态类型成员的方式是在类型说明符上使用::,如[System.Int32]::Parse("12")中所示。请注意,如果PowerShell无法按照您的指定找到它,那么它将在您的类型名称前加System.。这是一个很好的捷径。还有类型加速器以相同的方式出现,例如[int]::Parse("12")

答案 1 :(得分:1)

是的,这是一条规则。更具体地说,当您在对象上调用方法(而不是cmdlet或独立函数)时,您始终使用调用大括号()的内容并使用逗号,分隔您的参数:

# A cmdlet: no use of (), parameter names and values separated by spaces
$obj = New-Object -TypeName PSObject -ArgumentList @{Name='hello'}

# A method: () are used even with no arguments
$obj.GetType()

请注意,在英语中,这些很多通常被称为括号,而大括号通常是指花括号,它们是:{ {1}}。