Powershell Foreach, Süre ve Diğer Döngüler Nasıl Çalışır?

  • Joseph Goodman
  • 0
  • 1226
  • 157
reklâm

Programlamayı öğrenmede çok önemli bir ilk adım döngülerle çalışmak Yeni başlayanlar için programlamanın mutlak temelleri (Bölüm 2) Yeni başlayanlar için programlamanın mutlak temelleri (Bölüm 2) Yeni başlayanlar için program rehberinin ikinci bölümünde, Fonksiyonların temelleri, dönüş değerleri, döngüler ve koşullamalar. Bunu çözmeden önce 1. bölümü okuduğunuzdan emin olun, burada…. Neyse ki, PowerShell yeteneklerinizle büyümeye devam ediyor.

Her gün kullandığınız komutları zamandan ve emekten tasarruf etmek için döngüler içinde çerçeveleyebilirsiniz. Senaryoların yoğun kaldırılması, MakeUseOf ile ilgili daha fazla makale okumanın önemli işlerini yaparken!

Powershell ForEach Döngüler: Gelişmiş Veri İşleme Kapısı

ForEach, ForEach-Object'in takma adıdır. (Diğer Ad, PowerShell'deki bir komut için yalnızca bir kısayoldur.) Bu, PowerShell'in verileri işleme biçimi hakkında konuşmak için iyi bir zamandır..

Çoğu modern programlama dili gibi, PowerShell nesne yönelimlidir "Nesne Yönelimli" Programlama Adını Nereden Aldı? "Nesneye Yönelik" Programlama İsmini Nereden Aldı? Nesne Yönelimli, programlama çevrelerinde duyduğunuz rastgele bir kelimedir. İsmin arkasında bir sebep var - ama ne? Programlama kavramlarının bazı temellerini araştırırken ve açıklayacağımda bana katılın…. PowerShell'deki her şey bir nesnedir, yani değişkenler bile genişletilmiş özelliklere ve işlevlere sahiptir, Windows Yönetici Becerilerinizi Geliştirecek Powershell Cmdlets Windows Yönetici Becerilerinizi Geliştirecek Powershell Cmdlets Powershell eşit parça komut satırı aracı ve komut dosyası dilidir. Bilgisayarınızı yönetmek için kullandığınızla aynı komutlarla otomatikleştirme yeteneği verir. . Bu özellik, aramalarınızı bir değişkene ayarlayabilmeniz ve sonuçların bir dizisiyle sonuçlayabilmenizin nedenidir..

$ yourVar = Get-ChildItem * foreach ($ yourVar'daki $ dosyası) Adımlarınız 

Bazı dillerde, bu dizinin işlenmesi çok adımlı bir işlemdir. İlk önce uzunluğu alıp her adımı saymak.

PowerShell'de, dizi içinde ilerler ve ForEach kullanarak her biri üzerinde eylem gerçekleştirirsiniz. Bu size daha uzun bir komut dosyanız varsa yardımcı olan birkaç kod satırı kaydeder. Örneğin, aşağıdakiler bir kaç Powershell ForEach döngüsünü kullanacak küçük bir betiktir. 30 gün içinde açmamış olduğunuz tüm dosyalarınızın ZIP arşivini oluşturur..

ForEach Döngülerini Kullanarak Bir Dosya Arşiv Sistemi Oluşturma

Adımları kıralım. Kullan Get-ChildItem Belgeler klasöründeki tüm dosyaları almak için Ortam değişkeni Ortam Değişkenleri Nedir ve Nasıl Kullanabilirim? [Windows] Ortam Değişkenleri Nedir ve Nasıl Kullanabilirim? [Windows] Her şimdi ve sonra "bana, bir yıl önce bilseydim beni saatlerce kurtaracağını" düşünmemi sağlayan küçük bir ipucu öğreneceğim. Canlı olarak nasıl yapılacağını öğrendiğimi hatırlıyorum. $ Env: userprofıle mevcut profili kullanarak betiği çalıştırır. Bu değişken, kodlanmış bir yoldan daha taşınabilir. Bu aramanın sonuçları değişkene atanır. $ MyDocs. Daha sonra ForEach loop'ımızı her bir adım arasında ilerleterek yaratırız. $ Doc $ $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Reace foreach ($ doc $ MyDocs içinde) if ($ doc.LastAccessTime -lt $ (Get-Date) .addDays (-30)) $ oldDocs + = $ doc $ ArchiveFolder = Yeni Öğe -Yol "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ()) "-ItemType Directory foreach ($ oldDocs'ta $ doc) Move-Item -Path $ doc.FullName -Destination" $ ($ ArchiveFolder.FullName) \ $ ($ doc.Name) "-Confirm $ false $ kaynak = $ ArchiveFolder.FullName $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder.Name) .zip" Ek Türü -Adı DüzeniAdı "system.io.compression.filesystem" [io.compression.zipfile] :: :: CreateFromDirectory ($ kaynak, $ hedef) eğer (test-yolu $ hedef) Kaldır-Öğe -Path $ ArchiveFolder -Recurse -Confirm $ false 

Döngü içinde her dosyanın olup olmadığını kontrol ederiz. LastAccessTime mülkiyet 30 günden eski. Bunu da anlıyoruz Get-Tarih cmdlet ve AddDays negatif otuz ile işlev. Öyleyse dosyayı dosyaya ekleriz. $ myOldDocs dizi. Dosya sıralama işlemi tamamlandıktan sonra tamamlanmış dizimizi alıp bir zip dosyası yaratırız. Bu işlem biraz .NET'i çağırmayı gerektirdiğinden biraz daha karmaşıktır. Endişelenmeyin, endişelenmeyin - bu TechNet yardım belgesindeki kodu çalabilirsiniz.

Burada olanları parçalamak için: Eski dosyalarımızın tümünü 30 günden daha eski olan bugünün tarihi için yeni bir dizine taşıyacağız. Bu klasör bir kez oluşturulduktan sonra, aynı isimdeki ZIP arşivini oluşturmalıyız. Arşivin başarılı olduğundan ve .ZIP dosyasının orada olduğundan emin olmak için test edeceğiz ve ardından yeni klasörü silin. Bunu ayda bir kez çalışmak üzere zamanlanmış bir görev olarak ayarlayın. Kendinize küçük bir alan kazandırır ve Belgeler klasörünüzü temiz tutarsınız.

Süre ve Yapma: Durumda Döngüler

Bir döngüyü yalnızca belirli bir koşul gerçekleştiğinde çalıştırmak istiyorsanız, bir While döngüsü kullanırsınız. Sayımı izlemek için bir değişken kullanıyorsanız, önce onu ayarlayın..

i = 0 iken (i<10) Your Steps i+=1  

Sorun şu ki, bir sayaç kullanmıyorsanız, test doğru olsa bile kodunuzun en az bir kez çalışmasını isteyebilirsiniz. Bu, aşağıdaki örnek komut dosyasındaki durumdur. Dolayısıyla, bu durumlarda, bir Do-While döngüsü kullanmak istersiniz Nasıl Yapılır-Döngüler Bilgisayar Programcılığında Çalışır Nasıl Yapılır-Döngüleri Bilgisayar Programcılığında Çalışır Döngüler, programlamada öğreneceğiniz ilk kontrol türlerinden biridir. Muhtemelen süre ve döngüler hakkında bilginiz vardır, fakat bir süre bitimi döngüsü ne başarır? . Sözdizimi biraz farklı.

Adımlarını süre (Koşullu İfade) 

Bunları kullanmak acemi bir programcı için tam olarak belli değil. Tipik gün-gün komut dosyası yaparak, bu sık sık bunlarla karşılaşmayabilirsiniz. Özellikle kullanışlı hale geldikleri yer, bir sürecin başarısını test etmek için geçici bir zamanlayıcı yapmaktır..

Uzaktaki bir makineyi yeniden başlatmak ve 15 dakika içinde geri dönmemesi durumunda uyarmak için hızlı bir komut dosyası oluşturacağız. Bu senaryoda, bir ev sunucusu veya çok sık yeniden başlatılmayan başka bir makine olduğu varsayılmaktadır. Bilgisayarınız genellikle daha hızlı gelirse zamanı ayarlamaktan çekinmeyin.

Yeniden Başlatın ve Kontrol Edin: Bir Do-While Döngüsü Kullanma

Bu script biraz daha basit. İlk önce Bilgisayarı yeniden başlat uzak makineyi yeniden başlatmak için komut. (Yeniden başlatma komutları için burada sahte bir IP kullandık, bunun yerine bilgisayarınızın DNS / IP'sini yazdığınızdan emin olun). Ardından sayaç değişkenini oluşturun, ben ve 0 olarak ayarlayın. Ardından, Start-Sleep ile Do döngüsünü betiği 300 saniye (beş dakika) durduracak şekilde ayarlayın. İkinci bir komut sayaca bir tane ekler.

Bilgisayarı Yeniden Başlat -BilgisayarAdı 127.0.0.1 i = 0 do Başlat-Uyku -Seiden 300 $ i + = 1 iken ((! (Test-Connection 127.0.0.1 -Quiet))) -veya $ i-gt 3) eğer ( $ i -gt 3) Write-Ouput "Uzak Makine cevap vermiyor, lütfen kontrol edin."  else Yazma Çıkışı "Yeniden Başlatma Başarılı" 

O zaman While kriterlerine sahibiz. Bir hatanın alarm vermesini sağlamak için bir Or testi kullanıyoruz. Alternatif, uzaktaki makineyi sonsuza dek bekleyen betiğin döngülenmesidir. Makineyi kontrol etmek için, Test bağlantısı cmdlet. Basit olması için, bu PowerShell için Ping'dir. Parametre ekledik -Sessiz bu da paketlerin sonuçlarından ziyade Doğru veya Yanlış döndürmeye zorlar. Or ifadesinin ikinci kısmı, sayacın üçten fazla olup olmadığını kontrol eder.

Döngü tamamlandıktan sonra, çıkışı oluşturmak istiyoruz. Bu, sayacımızı kontrol etmemiz gerektiği anlamına geliyor. Bu hızlı bir if / else ifadesidir. Üçten büyükse, komut dosyası uzak makinenin yanıt vermediğini çıkarır. Değilse, yeniden başlatmanın başarılı olduğunu gösterir..

Diğer döngüler

PowerShell'de kullanılabilen başka iki tür döngü vardır. Bunlar önceki iki döngü ile biraz ilişkilidir, sadece yaygın olarak kullanılmazlar. Bir For döngüsü While örneğine benzer şekilde çalışır. Değerlendirmedeki tüm kriterlerinizi belirlersiniz, ardından cmdlet'lerinizi belirlersiniz..

($ i = 0; $ i -lt 10; $ i ++) Adımlarınız 

Döngüler gibi olana kadar yapın Döngülerken, Sadece While deyimini Until olarak değiştirin. Örnek komut dosyasında, davranışla aynı olacaktır. Bu bir stil seçimidir, fakat Do While, diğer durumlarda daha çok yönlüdür. Sadece bir tanesini hatırlarsanız, Do Süre daha faydalı.

PowerShell, bu döngülerden her biri için de yardım sağlar. Ekleyerek yardım alabilirsiniz hakkında Get-Help'de döngü adından önce. Daha sonra her tip için örnekler ve diğer ipuçlarını görebilirsiniz. Sıkışırsanız bunlar yardımcı olacaktır..

Seninle Büyümeye Devam Etmek

Bu noktada, sağlam komut dosyaları oluşturmaya başlamak için becerilerin çoğuna sahipsiniz. Ev donanımınızı otomatikleştirmek 15 15 Gelişmiş Görevler PowerShell Windows 10'da İşlem Yapabilir 15 15 Gelişmiş Görevler PowerShell Windows 10'da İşlem Yapabilir PowerShell komut istemine benzer, ancak daha iyidir. Güçlü bir sistem yönetim aracıdır. PowerShell'in sihrinden faydalanan, bazıları basit, bazıları karmaşık 15 görevden derledik. veya işte zamandan tasarruf sağlayan döngüler, komut dosyalarınızın daha fazlasını yapmasına yardımcı olur. Bu döngülerle hata işlemeyi birleştirmek, komut dosyalarınızı temel bilgilerin ötesine taşır. Bu İpuçları İle Bir Patron Gibi İşlem Yapın PowerShell Hatalarını Bu İpuçları İle Bir Patron Gibi Kullanın PowerShell hata işleme için dört bölüm vardır: Hata Eylemi parametresi, Try / Catch blokları, Hata Değişken parametresi ve günlük kaydı. Hepsini nasıl yapacağınızı öğrenin. . Bu daha gelişmiş dillere kapıyı açar.

Döngüler kullanarak oluşturduğunuz akıllı bir PowerShell betiği nedir? Yorumlarda bizimle paylaşın.




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.