在PowerShell中是否还有其他括号用法?

时间:2011-04-05 21:03:45

标签: syntax powershell language-construct

作为Powershell世界的新手,有时我会陷入棘手的语法。这就是为什么我要弄清楚语言中括号的所有可能用途。

你还知道吗?你能在这里添加吗?

这是我的(在管道中忽略基本使用卷曲和在方法调用中舍入):

# empty array
$myarray = @()

# empty hash
$myhash = @{}

# empty script block
$myscript = {}

# variables with special characters
${very strange variable @ stack !! overflow ??}="just an example"

# Single statement expressions
(ls -filter $home\bin\*.ps1).length

# Multi-statement expressions inside strings
"Processes: $($p = “a*”; get-process $p )"

# Multi statement array expression
@( ls c:\; ls d:\)

6 个答案:

答案 0 :(得分:5)

导致语句在表达式中产生结果:

($x=3) + 5   # yields 8

答案 1 :(得分:4)

使用泛型时,需要将类型包装在[..]

New-Object Collections.Generic.LinkedList[string]

对于某些人来说,这可能看起来很混乱,因为它类似于数组中的索引。

答案 2 :(得分:2)

Param()语句(在函数,脚本或脚本块中)

围绕If(或Elseif语句)中的条件

围绕switch语句中的表达式。

编辑:在while语句中忘记条件。

Edit2:另外,子表达式的$()(例如在字符串中)。

答案 3 :(得分:1)

正则表达式可以说是Powershell中的第一类构造。

如果我们正在编译一个完整的列表,我们可以包括正方形和圆括号在正则表达式中扮演的角色。

一个例子:

$obj.connectionString = $obj.connectionString -replace '(Data Source)=[^;]+', '$1=serverB\SQL2008_R2'

由于支持XML,您甚至可以包含XPath中使用的方括号。 (尽管如此,这真的很长: - )

select-xml $config -xpath "./configuration/connectionStrings/add[@name='LocalSqlServer']"

答案 4 :(得分:0)

它甚至已写入,但在“字符串内的多语句表达式我将添加

之后的第一个短列表中不够清楚
# Var property inside a string
$a = get-process a*
write-host "Number of process : $a.length" # Get a list of process and then ".length
Number of process : System.Diagnostics.Process (accelerometerST) System.Diagnostics.Process (AEADISRV) System.Diagnostics.Process (agr64svc).length

write-host "Number of process : $($a.length)" # To get correct number of process
Number of process : 3

答案 5 :(得分:0)

括号最有力。

假设你想收集一些scriptblock的所有输出,包括错误,并重定向到一个变量或另一个函数来处理这个...用括号,这很容易完成:

$customScript = {  "This i as test"; This will be procedure error!  }

(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}