İlan

Çok önemli bir ilk adım öğrenme programlama döngülerle çalışıyor Yeni Başlayanlar İçin Programlamanın Mutlak Temelleri (Bölüm 2)Mutlak yeni başlayanlar için programlama kılavuzumuzun 2. bölümünde, fonksiyonların, dönüş değerlerinin, döngülerin ve koşulların temellerini ele alacağım. Bu konuyu ele almadan önce bölüm 1'i okuduğunuzdan emin olun. Daha fazla oku . Neyse ki, PowerShell yeteneklerinizle büyümeye devam ediyor.

Zamandan ve emekten tasarruf etmek için her gün kullandığınız komutları döngüler içinde çerçeveleyebilirsiniz. Komut dosyalarınız MakeUseOf hakkında daha fazla makale okuma önemli iş yaparken ağır kaldırma yapar!

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

ForEach, ForEach-Object için diğer addır. (Takma ad, PowerShell'deki bir komutun kısayoludur.) Bu, PowerShell'in veri işleme şekli hakkında konuşmak için iyi bir zamandır.

Çoğu modern programlama dili gibi, PowerShell nesne yönelimli "Nesneye Yönelik" Programlama Adını Nereden Aldı?Nesneye Dayalı, programlama çevrelerinde duyduğunuz rastgele bir terim değildir. Adın arkasında bir neden var - ama ne? Programlama kavramlarının bazı temellerini araştırırken ve açıklarken bana katılın ...

instagram viewer
Daha fazla oku . PowerShell'deki her şey bir nesnedir, yani değişkenler bile genişletilmiş özelliklere ve işlevlere sahip Windows Yönetici Becerilerinizi Geliştirecek Powershell Cmdlet'leriPowershell eşit parça komut satırı aracı ve komut dosyası dilidir. Bilgisayarınızı yönetmek için kullandığınız komutlarla otomatikleştirmenizi sağlar. Daha fazla oku . Bu özellik, aramalarınızı bir değişkene ayarlayabilmeniz ve sonuçlardan oluşan bir dizi ile sonuçlanabilmenizdir.

$ yourVar = Get-ChildItem * foreach ($ yourVar dosyasında $ dosya) {Adımlarınız. }

Bazı dillerde, bu dizinin işlenmesi çok adımlı bir işlem olacaktır. İlk olarak, uzunluğu elde edin ve ardından her adımı sayın.

PowerShell'de, dizide adım adım ilerler ve ForEach'ı kullanarak her biri için eylem gerçekleştirirsiniz. Bu size birkaç kod satırı kaydeder, bu da daha uzun bir komut dosyanız varsa yardımcı olur. Örneğin, aşağıdaki birkaç Powershell ForEach döngüsü kullanan küçük bir komut dosyasıdır. 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 Dosya Arşiv Sistemi Oluşturma

Adımları yıkalım. Kullan Get-ChildItem Belgeler klasöründeki tüm dosyaları almak için. Ortam değişkeni Ortam Değişkenleri Nedir ve Bunları Nasıl Kullanabilirim? [Pencereler]Arada sırada, "iyi, bir yıl önce bilseydim, saatlerimi kurtarırdı" diye düşündüren küçük bir ipucu öğreneceğim. Nasıl yapılacağını öğrendiğimi hatırlıyorum ... Daha fazla oku $ env: KULLANICI PROFİLİ geçerli profili kullanarak komut dosyasını çalıştırır. Bu değişken, sabit kodlanmış bir yoldan daha taşınabilirdir. Bu aramanın sonuçları değişkene atanır $ MyDocs. Daha sonra ForEach döngümüzü her biri $ MyDocs'daki $ Doc.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Araç. foreach ($ MyDocs içinde $ doc) {if ($ doc. LastAccessTime -lt $ (Başlangıç ​​Tarihi) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Yeni Öğe -Yol "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Dizini. foreach ($ oldDocs içinde $ doc) {Move-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. FullName) \ $ ($ doktor. Name) "-$ false değerini onaylayın. } $ source = $ ArchiveFolder. Ad Soyad. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Ad) .zip" Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source, $ destination) if (test-path $ destination) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Döngünün içinde, her bir dosyanın LastAccessTime mülkiyet 30 günden eski. Biz bunu ile elde Get-Tarih cmdlet ve AddDays negatif otuz ile işlev. Eğer öyleyse, dosyayı $ myOldDocs dizi. Dosya sıralaması tamamlandıktan sonra, tamamlanan dizimizi alıp bir zip dosyası oluştururuz. Bu işlem biraz daha karmaşıktır çünkü biraz .NET çağırmayı içerir. Eğer tam olarak anlamadıysanız endişelenmeyin - kodu çalabilirsiniz bu TechNet yardım belgesi.

Burada olanları yıkmak için: Tüm eski dosyalarımızı 30 günden daha eski bir tarihe sahip yeni bir dizine taşıyacağız. Bu klasör oluşturulduktan sonra, aynı adda ZIP arşivi oluşturmamız gerekir. 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ü sileceğiz. Bunu, ayda bir çalışacak zamanlanmış görev olarak ayarlayın. Kendinize biraz yer kazandıracak ve Belgeler klasörünüzü temiz tutacaksınız.

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

Bir döngüyü yalnızca belirli bir koşul karşılandığında çalıştırmak istiyorsanız, bir While döngüsü kullanırsınız. Yukarı sayımı izlemek için bir değişken kullanıyorsanız önce bunu ayarlayın.

I = 0. while (i <10) {Adımlarınız i + = 1. }

Sorun, bir sayaç kullanmıyorsanız, test doğru olsa bile kodunuzun en az bir kez çalışmasını isteyebilirsiniz. Aşağıdaki örnek komut dosyasında durum böyledir. Yani bu durumlarda, bir Do-While döngüsü kullanmak istiyorsunuz Bilgisayar Programlamasında Do-While Döngüsü Nasıl Çalışır?Döngüler, programlamada öğreneceğiniz ilk kontrol türlerinden biridir. Muhtemelen while ve döngüler hakkında bilgi sahibi olursunuz, ancak do-while döngüsü neyi başarır? Daha fazla oku . Sözdizimi biraz farklıdır.

{Adımlarınız. } while (Koşullu Deyim)

Bunları kullanmak, acemi bir programcı için açık değildir. Tipik günden güne senaryo yazarken, bunlarla sık sık karşılaşmayabilirsiniz. Özellikle kullanışlı oldukları yer, bir sürecin başarısını test etmek için geçici bir zamanlayıcı yapmaktır.

Uzak bir makineyi yeniden başlatmak için hızlı bir komut dosyası oluşturacağız ve 15 dakika içinde yeniden gelmezse uyaracağız. Bu senaryo, çok sık yeniden başlatılmayan bir ev sunucusu veya başka bir makine olduğunu varsayar. Bilgisayarınız genellikle daha hızlı gelirse saati ayarlamaktan çekinmeyin.

Yeniden Başlatma ve Kontrol: Do-While Döngüsü Kullanma

Bu komut dosyası biraz daha basit. İlk olarak, Bilgisayarı yeniden başlat uzak makineyi yeniden başlatmak için komut. (Burada yeniden başlatma komutları için sahte bir IP kullandık, bunu bilgisayarınızın DNS / IP'sinin üzerine yazdığınızdan emin olun). Sonra sayaç değişkenini oluşturun, ben ve 0 olarak ayarlayın. Ardından, Start-Sleep ile Do döngüsünü komut dosyasını 300 saniye (beş dakika) durdurursunuz. İkinci bir komut sayaca bir komut ekler.

Bilgisayarı Yeniden Başlat -BilgisayarAdı 127.0.0.1. I = 0. {Start-Sleep -Seconds 300 $ i + = 1 yapın. } while ((! (Test-Bağlantı 127.0.0.1 -Sıkı)) -veya $ i -gt 3) ($ i -gt 3) {Write-Ouput "Uzak Makine yanıt vermiyorsa, lütfen kontrol edin." } else {Write-Output "Yeniden Başlatma Başarılı" }

Sonra While ölçütlerimiz var. Bir arızanın bir uyarı oluşturduğundan emin olmak için bir Or testi kullanıyoruz. Alternatif olarak, uzaktaki makineyi durmadan bekleyen komut dosyasıdır. Makineyi kontrol etmek için Test bağlantısı cmdlet. Basitlik için, bu Ping for PowerShell'dir. Parametreyi ekliyoruz -Sessiz bu da onu paketlerin sonuçları yerine True veya False döndürmeye zorlar. Or ifadesinin ikinci kısmı, sayacın üçten fazla olup olmadığını kontrol eder.

Döngü tamamlandığında, çıktıyı oluşturmak istiyoruz. Bu, sayacımızı kontrol etmemiz gerektiği anlamına geliyor. Bu hızlı bir if / else deyimidir. Üçten büyükse, komut dosyası uzak makinenin yanıt vermediğini verir. Değilse, yeniden başlatmanın başarılı olduğu sonucuna varır.

Diğer Döngüler

PowerShell'de iki tür döngü daha mevcuttur. Önceki iki döngü ile biraz ilişkilidirler, sadece yaygın olarak kullanılmazlar. For döngüsü, While örneğine benzer şekilde çalışır. Değerlendirmede tüm kriterlerinizi belirledikten sonra cmdlet'lerinizi belirlersiniz.

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

Do döngüleri Do While döngüleri gibidir, sadece While deyimini Until olarak değiştirirsiniz. Örnek komut dosyasında, davranışla aynıdır. Bu bir stil seçimidir, ancak Do While diğer durumlarda daha çok yönlüdür. Yani sadece birini hatırlıyorsanız, Do While daha yararlıdır.

powershell foreach döngüler

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

Sizinle Büyümeye Devam Ediyor

Bu noktada, sağlam komut dosyaları oluşturmaya başlama becerilerinizin çoğuna sahipsiniz. olup olmadığını ev donanımınızı otomatikleştirme Windows 10'da PowerShell'in İşleyebileceği 15 Gelişmiş GörevPowerShell, komut istemine benzer, ancak daha iyidir. Güçlü bir sistem yönetim aracıdır. PowerShell büyüsünden yararlanan, bazıları basit, bazıları karmaşık olan 15 görev derledik. Daha fazla oku veya işte zaman tasarrufu sağlayarak, döngüler komut dosyalarınızın daha fazlasını yapmasına yardımcı olur. Bu döngülerle birleştirmek hata işleme, komut dosyanızı temel öğelerin ötesine taşır Bu İpuçları ile Patron Gibi PowerShell Hatalarını Ele AlınPowerShell hata işlemede dört bölüm vardır. Microsoft PowerShell'de hataları ve daha fazlasını düzeltmeyi öğrenin. Daha fazla oku . Bu, daha gelişmiş dillerin kapısını açar.

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

Michael mahkum olduklarında Mac kullanmadı, ancak Applescript'te kod yazabilir. Bilgisayar Bilimi ve İngilizce dereceleri vardır; bir süredir Mac, iOS ve video oyunları hakkında yazıyor; ve on yıldan uzun bir süredir senaryo yazımı ve sanallaştırma konusunda uzmanlaşmış bir gündüz IT maymunudur.