A PowerShell az egyik leggyakrabban használt eszköze az IT-szakembereknek mindenütt a világon. Egyedi tervezése és sokoldalúsága révén lehetővé teszi a felhasználók számára, hogy gyorsan és hatékonyan hajtsanak végre különféle feladatokat automatizálással, többek között fájlok kezelésétől kezdve, a rendszer karbantartásig. Ebben a cikkben a PowerShell egy izgalmas és rendkívül hasznos funkcióját, a ForEach-Object parancsmagot fogjuk részletesen megvizsgálni.

Mi az a ForEach-object?

A ForEach-Object egy pipeline parancsmag PowerShellben, amit arra használnak, hogy minden egyes objektumon, mely a pipeline-on keresztül érkezik, egy meghatározott műveletet végezzen el. Gyakran egyszerűen csak foreach-nak hívják (nem keverendő össze a foreach ciklusszintaxis-szal, melytől eltérő). Ez egy nagyon hatékony módszer arra, hogy iteráljunk az objektumok sorozatai felett anélkül, hogy explicit módon egy ciklust kellene írnunk.

Hogyan működik?

A ForEach-Object parancsmagot általában egy pipeline részeként használják. Az alábbi formátumban:

Get-Command | ForEach-Object { $_ }

Minden objektum, ami a Get-Command-ból jön, külön-külön átadásra kerül a ForEach-Object blokkjába, ahol { $_ } jelöli az aktuálisan feldolgozott objektumot. Itt tetszőleges műveletek végezhetők el minden egyes objektumon.

Példák

Példa 1: Fájlok átnevezése

Tegyük fel, hogy szeretnénk minden .txt fájlt átnevezni egy mappában, úgy hogy hozzáadjuk a fájlnév végéhez a _mod szöveget. Ezt így tehetjük meg:

Get-ChildItem -Path C:\Documents\*.txt | ForEach-Object { Rename-Item $_.FullName -NewName ($_.Name -replace '.txt', '_mod.txt') }

Példa 2: Szövegfájlok tartalmának kiíratása

Ha szeretnék minden .txt fájl tartalmát kiíratni egy mappában, ezt következőképp tehetjük meg:

Get-ChildItem -Path C:\Documents\*.txt | ForEach-Object { Get-Content $_.FullName }

Példa 3: Objektumok tulajdonságainak módosítása

Ha például egy tömbben lévő objektumok Size tulajdonságát szeretnénk 10-zel megemelni, a ForEach-Object segítségével így tehetjük:

$items = @( [PSCustomObject]@{ Name = 'Item1'; Size = 5 }, [PSCustomObject]@{ Name = 'Item2'; Size = 15 } )
$items | ForEach-Object { $_.Size += 10; $_ }

Tippek és trükkök

  • A $_. szintaxist használva hivatkozhatunk az aktuálisan feldolgozott objektumra a ForEach-Object scriptblockjában.
  • A ForEach-Object gyakran hasznosabb, mint a hagyományos foreach ciklus, mivel kevésbé memóriaintenzív, különösen nagy objektumkészletek esetén.
  • A -Parallel paramétert használva a ForEach-Object parancsmag több szálon is futtatható (PowerShell 7.0 és újabb verziókban elérhető), ami jelentősen gyorsíthat bizonyos feladatok végrehajtását.

Összefoglalva, a ForEach-Object parancsmag egy nagyon erős eszköz a PowerShellben, amely lehetővé teszi a felhasználók számára, hogy hatékonyan manipulálják és kezeljék az objektumokat a pipeline-on keresztül. Többféle felhasználása van, a fájlok kezelésétől kezdve, a szövegek manipulálásán át, egészen az objektumok tulajdonságainak módosításáig. Számos tipp és trükk létezik a ForEach-Object hatékonyabb használatára, többek között a -Parallel paraméter használata a feladatok párhuzamos végrehajtásához. Az itt bemutatott példák és gyakorlatok megértése elengedhetetlen ahhoz, hogy teljes mértékben ki tudjuk használni a PowerShellben rejlő potenciált.

Tagged:

About The Author

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük