web-dev-qa-db-ja.com

Powershellで「@」記号は何をしますか?

PowerShellで配列を初期化するために@記号が使用されているのを見てきました。 @記号の正確な意味と、それについての詳細はどこで参照できますか?

99
GrahamMc

PowerShellは、実際にはコンマ区切りリストを配列として扱います。

"server1","server2"

したがって、これらの場合、@はオプションです。ただし、連想配列の場合、@は必須です。

@{"Key"="Value";"Key2"="Value2"}

公式には、@は「配列演算子」です。詳細については、PowerShellと共にインストールされたドキュメント、または私が共同執筆した「Windows PowerShell:TFM」などの本を参照してください。

70
Don Jones

PowerShell V2では、@は スプラット演算子 でもあります。

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
108

上記の回答は、回答のmostを提供しますが、質問に遅れても、完全な回答を提供するのに役立ちます。

Array sub-expressionabout_arrays を参照)

シングルトンまたはnullの場合でも、値を強制的に配列にします。 $a = @(ps | where name -like 'foo')

ハッシュ初期化子about_hash_tables を参照)

キーと値のペアを使用してハッシュテーブルを初期化します。 $HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }

スプラッティングabout_splatting を参照)

より慣習的な個別に列挙されたパラメーターではなく、配列またはハッシュテーブルからのパラメーターでコマンドレットを呼び出しましょう。上記のハッシュテーブルを使用して、Copy-Item @HashArguments

ここで文字列about_quoting_rules を参照)

通常、複数行の文字列に使用される引用符を簡単に埋め込んだ文字列を作成してみましょう。

$data = @"
line one
line two
something "quoted" here
"@

この種の質問(PowerShellで 'x'表記はどういう意味ですか?)は、StackOverflowや多くの読者のコメントで非常に一般的であるため、 Simple-Talk.com。 %と#および$ _と?だけでなく、@についてもすべてお読みください。 PowerShell句読点の完全ガイド にあります。この記事には、すべてを1枚のシートに収めるこのウォールチャートが添付されています。 enter image description here

45
Michael Sorens

コマンドレット(またはパイプライン)の出力を@()でラップして、返されるものが単一のアイテムではなく配列であることを確認することもできます。

たとえば、dirは通常リストを返しますが、オプションによっては単一のオブジェクトを返す場合があります。 foreachオブジェクトを使用して結果を反復処理することを計画している場合は、リストを取得する必要があります。これは、不自然な例です。

_$results = @( dir c:\autoexec.bat)
_

もう1つ...空の配列(変数を初期化するなど)は@()と示されます。

26
Mike Shepard

スプラッティングオペレーター

配列を作成するには、変数を作成して配列を割り当てます。配列には「@」記号が付いています。上記の議論を取り、配列を使用して複数のリモートコンピューターに接続します。

$strComputers = @("Server1", "Server2", "Server3")<enter>

それらは配列とハッシュに使用されます。

PowerShellチュートリアル7:データの蓄積、呼び出し、変更

PowerShellの配列リテラル

8
Cadoo