Answers:
在PowerShell V2中,@也是Splat运算符。
PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true
尽管以上回答提供了大多数答案,但对于问题的完整解答,即使是问题的后期,也很有用:
数组子表达式(请参阅about_arrays)
强制将值设置为数组,即使单例或为null,例如 $a = @(ps | where name -like 'foo')
哈希初始化器(请参阅about_hash_tables)
用键值对初始化哈希表,例如
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
泼洒(见about_splatting)
让我们用数组或哈希表中的参数而不是更常规的单个枚举参数来调用cmdlet,例如,使用上面的哈希表, Copy-Item @HashArguments
这里是字符串(请参阅about_quoting_rules)
让我们用容易嵌入的引号创建字符串,这些引号通常用于多行字符串,例如:
$data = @"
line one
line two
something "quoted" here
"@
因为此类问题(PowerShell中的“ x”符号是什么意思?)在StackOverflow以及许多读者的评论中都很常见,所以我整理了一份Powershell标点词典,该词典刚刚在Simple-Talk.com上发布。阅读所有有关@以及%和#和$ _和?的信息。有关更多信息,请参见《 PowerShell标点的完整指南》。该文章的附件是此挂图,可在一张纸上为您提供所有功能:
喷溅操作符
要创建一个数组,我们创建一个变量并分配该数组。数组以“ @”符号表示。让我们进行以上讨论,并使用一个数组连接到多台远程计算机:
$strComputers = @("Server1", "Server2", "Server3")<enter>
它们用于数组和哈希。