22

私はまだPowerShellの経験があまりなく、進んでいくうちに自分自身を教えようとしています。

より大きなプロジェクトの概念実証コードを作成しようとしています。ここでの主な目標は、関数を使用して要素を動的に作成し、配列に追加することです。

これが私のコードです:

$testArray = @()
function addToArray($Item1)
{
    $testArray += $Item1
    "###"
}

$tempArray = "123", "321", "453"
$foldertest = "testFolder"

foreach($item in $tempArray)
{
    addToArray $item
}
"###"

関数が終了するたびに、配列は空になります。私のプログラミング経験のほとんどは、Java、PHP、いくつかのCおよびC ++からのものであることに注意してください。これを、PHPで(もちろん言語構文を調整して)行った場合、これは問題なく機能します。

4

4 に答える 4

33
$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"

foreach($item in $tempArray)
{
    $arrayID = $testArray.Add($item)
}
于 2016-10-03T04:54:41.497 に答える
15

問題は範囲の1つです。addToArray関数内で、行を次のように変更します。

$script:testArray += $Item1

...期待している配列変数に格納します。

于 2012-11-10T06:43:23.100 に答える
3

動的な量のアイテムで遊ぶ場合、より正確な解決策はリストを使用することです。

$testArray = New-Object System.Collections.Generic.List[System.Object]

$tempArray = "123", "321", "453"

foreach($item in $tempArray)
{
    $testArray.Add($item)
}

注:この場合、.Netからリストの機能を利用できるため、linqの適用、マージ、分割など、.Netのリストで行うことはすべて簡単に実行できます。

于 2019-10-11T16:51:19.953 に答える
0

ループの反復ごとに配列を再作成する代わりに(基本的には、配列に追加するたびに発生します)、ループの結果を変数に割り当てます。

$testArray = foreach($item in $tempArray)
{
    addToArray $item
}
于 2012-11-10T17:32:47.590 に答える