2011-01-19 19 views
5

例1:powershellの配列の正しい構文は何ですか?

注2:アレイを作成する

、:コンマはまた、配列{0、-30}

例2にそう 別個のアイテムで使用され変数 を作成し、配列を割り当てます。配列 は "@"記号で示されます。レッツ 複数のリモート コンピュータに接続するために、上記の議論を取り、 配列を使用します。$ strComputers = @ 1である

ので(「サーバ1」、「サーバー2」、「サーバ3」)、正しいですか違いはなんですか ?

+1

{0、-30}作成しません配列では、スクリプトブロックを作成します。しかし、あなたが実行すると分かるように、通常はホストで配列がどのように出力されるのでしょうか? 'New-Object PSObject -Property @ {array = 'a'、 'b'、 'c'}' – Jaykul

答えて

13

例2は、例えば、配列として扱われるべき、単一の要素を可能にする配列キャスト構文使用:基本的

$myList = @("Hello") 

を、それが括弧の間に何かを含む配列として扱われることを可能にします他のコマンドからの出力:

$myArray = @(Get-Process Excel) 

代わりにあなただけのカンマ区切りリストを指定して配列を作成することができます。

$myArray = "hello", "world", "again" 

+2

質問に完全に答えるために、{}がスクリプトブロックであり、配列ではないという説明を追加する必要があります。 – Jaykul

+1

また、 '@()'は '配列サブ表現' - * Windows PowerShell in Action * pg 119と呼ばれます:-)。 'hello'、 'world'、 'again'の上の2番目の形式は、配列を作成するための "標準的な"方法です。配列の部分式は、通常、ある式の結果が空の単一要素または複数要素の配列の配列であることを保証するために使用されます。 –

3

あなたはまた、1つの値を、オペレータを付加することによって、単一素子アレイを得ることができる(中括弧は必要とされない):

[PS] C:\>$a = ,"Hello World" 

[PS] C:\>$a.gettype() 


IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Object[]         System.Array 


[PS] C:\>$a.count 

1 
+0

良い点 - 私はコードをインデントするために編集して、奇妙なラッピングの代わりにコード(プリフォーマット)として表示します。 – Jaykul

関連する問題