source

PowerShell의 어레이에 요소를 동적으로 추가하려면 어떻게 해야 합니까?

ittop 2023. 10. 9. 23:32
반응형

PowerShell의 어레이에 요소를 동적으로 추가하려면 어떻게 해야 합니까?

저는 아직 파워쉘 경험이 많지 않고 앞으로 가면서 독학을 하려고 합니다.

더 큰 프로젝트를 위해 개념 증명 코드를 만들려고 합니다.여기서의 주요 목표는 함수를 사용하여 배열에 요소를 너무 동적으로 생성하고 추가하는 것입니다.

여기 내 코드가 있습니다.

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

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

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

함수가 완료될 때마다 배열이 비어 있습니다.제 프로그래밍 경험의 대부분은 자바, PHP, 일부 C와 C++에서 비롯되는데, 제가 이것을 PHP(물론 언어 구문 조정)로 했다면 이것은 잘 작동했을 것입니다.

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

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

문제는 범위 중 하나입니다. addToArray 함수 안에서 행을 다음과 같이 변경합니다.

$script:testArray += $Item1

...예상하는 배열 변수에 저장합니다.

동적인 양의 항목을 사용할 경우 목록을 사용하는 것이 보다 정확한 솔루션이 될 수 있습니다.

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

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

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

참고: 이 경우 에서 목록의 힘을 얻을 수 있습니다.Net을 사용하면 쉽게 linq를 적용하고 병합하고 분할하여 .Net의 목록을 사용하여 수행할 수 있습니다.

각 루프 반복에서 배열을 다시 생성하는 대신(기본적으로 배열에 추가할 때마다 수행되는 작업), 루프의 결과를 변수에 할당합니다.

$testArray = foreach($item in $tempArray)
{
    addToArray $item
}

배열의 맨 처음에 항목을 추가하려면(인덱스 0) PHP의 array_unshift($array, $item)와 같이 다음과 같이 작업할 수 있습니다.

$tempArray = "123", "321", "453"
$foldertest = "testFolder"
$tempArray = @($foldertest) + $tempArray

다음과 같은 이점이 있습니다.

PSD:\users\user1\temp> $tempray테스트폴더123321453

언급URL : https://stackoverflow.com/questions/13318382/how-do-i-dynamically-add-elements-to-arrays-in-powershell

반응형