7

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

你还知道一些吗?可以在这里补充吗?

这是我的(省略了管道中 curly 的基本用法和方法调用中的 round ):

# 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:\)
4

6 回答 6

6

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

($x=3) + 5   # yields 8
于 2011-04-05T21:23:31.643 回答
4

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

New-Object Collections.Generic.LinkedList[string]

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

于 2011-04-05T22:33:13.600 回答
2

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

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

在 switch 语句中围绕表达式。

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

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

于 2011-04-05T21:36:12.350 回答
1

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

如果我们正在编译一个完整的列表,我们可以包括方括号和圆括号在正则表达式中所起的作用。

一个例子:

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

由于对 XML 的支持,您甚至可以将 XPath 中使用的方括号包括在内。(不过,这确实是一个长弓:-)

select-xml $config -xpath "./configuration/connectionStrings/add[@name='LocalSqlServer']"
于 2011-04-05T23:18:23.607 回答
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
于 2011-04-06T03:29:50.777 回答
0

括号是最有力的。

假设您想收集某个脚本块的所有输出,包括错误,并重定向到一个变量或另一个函数来处理这个......使用括号,这很容易:

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

(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}
于 2014-10-12T14:09:42.260 回答