PowerShell'de Bir Dizideki Değerler Nasıl Değiştirilir


PowerShell dizisindeki değerleri değiştirmeniz veya güncellemeniz mi gerekiyor? Bu PowerShell eğitiminde, PowerShell'de bir dizideki değerlerin farklı yöntemler kullanılarak nasıl değiştirileceğini örneklerle keşfedeceğiz.

PowerShell'de bir dizideki değerleri değiştirmek için ForEach-Object döngüsünü veya -replace operatörünü kullanabilirsiniz. Örneğin, $dizi=$dizi | ForEach-Object { $_ -replace 'oldValue', 'newValue' } dizideki tüm 'oldValue' oluşumlarını 'newValue' ile değiştirecektir. Dizi basit dizeler içeriyorsa ve belirli bir değeri değiştirmek istiyorsanız, ilk öğeyi değiştirmek istiyorsanız $array[0]='newValue' gibi bir dizin kullanarak değeri doğrudan ayarlayabilirsiniz.

PowerShell'de Dizideki Değerleri Değiştirme

İşte PowerShell'deki bir dizi örneği.

$myArray = 1, 2, 3, 4, 5

Şimdi PowerShell’de yukarıdaki dizide yer alan bir değeri değiştirmek istediğinizi varsayalım. Bunu yapmanın birkaç yöntemi var ve her birini örneklerle ele alacağız.

1. Dizin Atamasını Kullanma

PowerShell'de bir dizideki bir öğeyi değiştirmenin en basit yolu dizinin dizinini kullanmaktır. Diziler sıfır dizinlidir; bu, ilk öğenin dizini 0, ikinci öğenin dizini 1 vb. olduğu anlamına gelir. İkinci öğeyi (değer 2) yeni bir değerle (10) nasıl değiştirebileceğiniz aşağıda açıklanmıştır:

$myArray = 1, 2, 3, 4, 5
$myArray[1] = 10

Aşağıda, PowerShell betiğini VS kodunu kullanarak çalıştırdıktan sonra 2. öğenin (index - 1) 10 değeriyle değiştirildiğini görebilirsiniz.

2. -replace Operatörünü Kullanmak

PowerShell ayrıca bir dizideki belirli metni veya karakterleri değiştirmek için kullanılabilecek -replace operatörünü de sağlar. Bu, dize değerlerinin parçalarını değiştirmek istediğinizde kullanışlıdır. Örneğin:

$myArray = "cat", "bat", "rat"
$myArray = $myArray -replace 'at','oy'
$myArray

Bu işlemden sonra $myArray içerisinde “coy”, “boy”, “roy” yer alacak.

3. Değerleri Değiştirmek İçin Döngü Kullanmak

Bazen değerleri bir koşula göre değiştirmeniz gerekebilir. Bu gibi durumlarda döngü kullanışlı olabilir. Örneğin, 2 sayısının tüm örneklerini 20 sayısıyla değiştirmek. For döngüsü kullanarak bir dizideki değeri değiştirmek için PowerShell betiğinin tamamı burada verilmiştir.

$myArray = 1, 2, 3, 4, 5, 2
for ($i = 0; $i -lt $myArray.Length; $i++) {
  if ($myArray[$i] -eq 2) {
    $myArray[$i] = 20
  }
}
$myArray

PowerShell betiğini çalıştırdığınızda çıktı aşağıdaki ekran görüntüsündeki gibi görüntülenecektir:

4. ForEach-Object Cmdlet'ini Kullanma

ForEach-Object cmdlet'i, aynı eylemi bir döngüyle gerçekleştirmenin daha PowerShell'e özgü bir yoludur. PowerShell'deki bir dizideki değerleri değiştirmek için bunu nasıl kullanabileceğiniz aşağıda açıklanmıştır.

$myArray = 1, 2, 3, 4, 5, 2
$myArray = $myArray | ForEach-Object {
  if ($_ -eq 2) {
    20
  } else {
    $_
  }
}
$myArray

5. Özel Bir İşlev Kullanmak

Daha karmaşık senaryolar veya dizi değerinin sık sık değiştirilmesi için özel bir işlev tanımlamak isteyebilirsiniz; burada iki parametre (eski değer, yeni değer) alacak ve son olarak PowerShell dizisindeki yeni değeri eski değerle değiştirecek özel bir fonksiyon yazdığımı görebilirsiniz.

function Replace-ArrayValue {
  param(
    [array]$Array,
    [object]$OldValue,
    [object]$NewValue
  )

  for ($i = 0; $i -lt $Array.Length; $i++) {
    if ($Array[$i] -eq $OldValue) {
      $Array[$i] = $NewValue
    }
  }

  return $Array
}

# Usage
$myArray = Replace-ArrayValue -Array $myArray -OldValue 2 -NewValue 20

Bu işlev bir dizi alır ve $OldValue ifadesinin tüm oluşumlarını $NewValue ile değiştirir.

Çözüm

Bir dizideki değerleri değiştirmek PowerShell betiğinde yaygın bir görevdir. Dizin ataması, -replace operatörü, döngüler, ForEach-Object cmdlet'i veya özel bir işlev kullanıyor olsanız da, PowerShell dizilerinizi etkili bir şekilde güncelleme esnekliği sağlar.

Bu PowerShell eğitiminde, PowerShell'deki bir dizideki değerleri değiştirmenin farklı yollarını aşağıdaki örneklerle açıkladım.

  1. Dizin Atamasını Kullanma
  2. -replace Operatörünü Kullanmak
  3. Değerleri Değiştirmek için Döngü Kullanma
  4. ForEach-Object Cmdlet'ini Kullanma
  5. Özel Bir İşlev Kullanma

İlgili makaleler