これは私がかなり頻繁に タイトルが示すように、PowerShell配列が作成されたら、PowerShell配列に要素を追加または削除する方法を示します。
PowerShell Arrays
PowerShellドキュメントからの配列の定義から始めましょう。
配列は、アイテムのコレクションを格納するように設計されたデータ構造です。, 項目には、同じタイプまたは異なるタイプを指定できます。初Windows PowerShell3.0集であり、どれか一つだけのオブジェクトの配列.
PowerShellで配列を作成するのは本当に簡単で、たとえばActive Directoryからユーザーのリストを取得するときにすでに行ったことがあります。
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
上記では、使用されているフィルターに一致するすべてのユーザーを含むADオブジェクトの配列が返されます。,
もちろん、次の構文で空の配列を初期化することができます
$myArray = @()# Specify object type$myArray = @()
上記は空の配列を初期化し、たとえばADクエリで埋めたり、次のような静的要素を追加したりできます
$myArray = (1,2,3,4,5)
上記は要素を追加します1から5までmyarrayオブジェクト長さが5の新しいオブジェクトをインスタンス化する
powershellは配列に要素を追加します
配列に値を作成して割り当てる方法を見ましたが、myarrayに第六要素を追加したい場合はどうでしょうか?, 次のことを試してみると
$myArray.Add(6)
次の例外で失敗します
上記の例外は、PowerShell配列が固定サイズのコレクションであるためにスローされ、エラーは拡張できないことを示しています。,
一つの一般的な解決策は、たとえば、次のような+=演算子を使用することです
$myArray += 6# Print array's length$myArray.length6
+=演算子を使用すると、内部で何が起こるかは
- PowerShellは、古いものと同じ要素に新しい項目を加えた新しい配列を作成します
- PowerShellは、既存の配列を新しいコンテンツで上書きします
これはすべてユーザーにとって透過的なので、違いはありません。,
配列に要素を追加する-ArrayListを入力します
すべてのコピー/移動データを避けたい場合は、myArrayを動的なArrayListとしてインスタンス化し、その場で要素を削除できます
同様に、次のようにArrayListから要素を削除できます
# Will corresponding item by index$myArrayList.RemoveAt(1)
注:Removeメソッドは要素の値を受け入れますしたがって、上記の例の1は、アイテムのインデックスではなく値を参照します。,
新しい配列の長さを出力するAddメソッドを抑制するためにキャスト
配列リストを作成する別の方法
上記の例では、新しいArrayListをインスタンス化するためにNew-Objectメソッドを呼び出しますが、これはコンピューティングリソースの点で比較的高価であるため、上記は
$myArray = @()
短いことに加えて、new-objectの負のパフォーマンスヒットを避けるという追加の利点があり、コードを最適化することは、特に大きなスクリプトを扱う,34f072bc0″>
閉じるノート
コードを書くときは、PowerShellでは必要ではありませんが、オブジェクトの型を常に宣言しようとします。
$myString = 'Some Text'
ではなく
$myString = 'Some Text'
これはpowershellでは必要ありませんが、コードの可読性に役立ち、変数の宣言に戻ることなく、コード内で800/900行宣言されたオブジェクト,
Leave a Reply