Iklan
Langkah penting pertama di belajar pemrograman bekerja dengan loop Dasar-Dasar Mutlak Pemrograman Untuk Pemula (Bagian 2)Pada bagian 2 dari panduan pemula absolut kami untuk pemrograman, saya akan membahas dasar-dasar fungsi, mengembalikan nilai, loop, dan kondisional. Pastikan Anda sudah membaca bagian 1 sebelum menangani ini, di mana saya menjelaskan ... Baca lebih banyak . Untungnya, PowerShell terus tumbuh dengan keterampilan Anda.
Anda dapat membingkai perintah yang ada yang Anda gunakan setiap hari di dalam loop untuk menghemat waktu dan usaha. Skrip Anda melakukan pekerjaan berat sambil melakukan pekerjaan penting membaca lebih banyak artikel di MakeUseOf!
Powershell ForEach Loops: Pintu menuju Penanganan Data Tingkat Lanjut
ForEach adalah alias untuk ForEach-Object. (Alias hanyalah jalan pintas untuk perintah di PowerShell.) Ini adalah saat yang tepat untuk berbicara tentang cara PowerShell menangani data.
Seperti kebanyakan bahasa pemrograman modern, PowerShell berorientasi objek
Darimana Pemrograman "Berorientasi Objek" Mendapatkan Namanya?Berorientasi Objek bukan hanya kata kunci acak yang Anda dengar di lingkaran pemrograman. Ada alasan di balik nama itu - tapi apa? Bergabunglah dengan saya ketika saya menjelajahi beberapa dasar-dasar konsep pemrograman dan menjelaskan ... Baca lebih banyak . Segala sesuatu di PowerShell adalah objek, yang berarti bahwa variabel genap memiliki properti dan fungsi yang diperluas Cmdlet Powershell Itu akan Meningkatkan Keterampilan Admin Windows AndaPowershell adalah alat baris perintah dan bahasa scripting yang sama. Ini memberi Anda kemampuan untuk mengotomatisasi komputer Anda melalui perintah yang sama yang Anda gunakan untuk mengaturnya. Baca lebih banyak . Properti itu sebabnya Anda dapat mengatur pencarian Anda ke variabel, dan berakhir dengan array hasil.$ yourVar = Dapatkan-ChildItem * foreach ($ file dalam $ yourVar) {Langkah Anda. }
Dalam beberapa bahasa, memproses array ini akan menjadi proses multistep. Pertama, dapatkan panjangnya dan kemudian hitung setiap langkah.
Di PowerShell, Anda melangkah melalui array dan melakukan tindakan pada masing-masing menggunakan ForEach. Ini menghemat beberapa baris kode, yang sangat membantu jika Anda memiliki skrip yang lebih panjang. Misalnya, berikut ini adalah skrip kecil yang akan menggunakan beberapa loop Powershell ForEach. Ini menciptakan arsip ZIP dari semua file Anda yang belum Anda buka dalam 30 hari.
Membangun Sistem Arsip File Menggunakan ForEach Loops
Mari kita hancurkan langkah-langkahnya. Kau gunakan Dapatkan-ChildItem untuk mendapatkan semua file di folder Documents. Variabel lingkungan Apa Variabel Lingkungan & Bagaimana Saya Dapat Menggunakannya? [Windows]Sesekali saya akan belajar sedikit tip yang membuat saya berpikir "baik, jika saya tahu bahwa setahun yang lalu maka itu akan menyelamatkan saya berjam-jam waktu". Saya ingat dengan jelas belajar bagaimana ... Baca lebih banyak $ env: USERPROFILE menjalankan skrip menggunakan profil saat ini. Variabel ini lebih portabel daripada jalur hardcoded. Hasil pencarian tersebut ditugaskan ke variabel $ MyDocs. Kami kemudian membuat loop ForEach kami dengan meminta langkah itu melalui masing-masing $ Doc in $ MyDocs.
$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc dalam $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Item Baru -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Dapatkan-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc dalam $ oldDocs) {Pindahkan-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. Nama Lengkap) \ $ ($ doc. Name) "-Confirm $ false. } $ source = $ ArchiveFolder. Nama lengkap. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Nama) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source, $ destination) if (test-path $ destination) {Hapus-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }
Di dalam loop, kami memeriksa untuk melihat apakah setiap file LastAccessTime properti lebih dari 30 hari. Kami mendapatkan ini dengan Dapatkan-Tanggal cmdlet, dan menggunakan AddDays berfungsi dengan negatif tiga puluh. Jika ya, kami tambahkan file ke $ myOldDocs Himpunan. Setelah pengurutan file selesai, kami kemudian mengambil array yang lengkap dan membuat file zip. Proses ini sedikit lebih rumit karena melibatkan sedikit. NET. Jangan khawatir jika Anda tidak cukup mengerti - Anda dapat mencuri kode dari dokumen bantuan TechNet ini.
Untuk memecah apa yang terjadi di sini: Kami akan memindahkan semua file lama kami ke direktori baru yang dinamai tanggal hari ini lebih dari 30 hari. Setelah folder itu dibuat, kita harus membuat arsip ZIP dengan nama yang sama. Kami akan menguji untuk memastikan bahwa arsip berhasil dan file .ZIP ada di sana, lalu hapus folder baru. Tetapkan ini sebagai tugas yang dijadwalkan untuk berjalan sebulan sekali. Anda akan menghemat sedikit ruang dan menjaga folder Dokumen Anda tetap bersih.
While and Do While: Loops on Condition
Jika Anda ingin menjalankan loop hanya ketika kondisi tertentu terpenuhi, Anda menggunakan loop Sementara. Jika Anda menggunakan variabel untuk melacak penghitungan, atur terlebih dahulu.
i = 0. while (i <10) {Langkah Anda i + = 1. }
Masalahnya adalah bahwa jika Anda tidak menggunakan penghitung, Anda mungkin ingin kode Anda berjalan setidaknya sekali sekalipun pengujian benar. Ini adalah contoh skrip di bawah ini. Jadi dalam kasus itu, Anda ingin menggunakan loop Do-While Bagaimana Do-While Loops Bekerja dalam Pemrograman KomputerLoop adalah salah satu tipe kontrol pertama yang akan Anda pelajari dalam pemrograman. Anda mungkin tahu tentang while dan for loop, tetapi apa yang dilakukan loop do-while? Baca lebih banyak . Sintaksnya sedikit berbeda.
lakukan {Langkah Anda. } while (Pernyataan Bersyarat)
Menggunakan ini tidak cukup jelas bagi programmer pemula. Melakukan penulisan skrip sehari-hari, Anda mungkin tidak terlalu sering menemukannya. Di mana mereka sangat berguna adalah untuk membuat timer darurat untuk menguji keberhasilan suatu proses.
Kami akan membuat skrip cepat untuk mem-boot ulang mesin jarak jauh dan mengingatkan jika itu tidak kembali dalam 15 menit. Skenario ini mengasumsikan bahwa ini adalah server rumah atau mesin lain yang tidak sering reboot. Jangan ragu untuk menyesuaikan waktu jika komputer Anda biasanya muncul lebih cepat.
Nyalakan kembali dan Periksa: Menggunakan Do-While Loop
Script ini sedikit lebih sederhana. Pertama, Anda menggunakan Nyalakan kembali-Komputer perintah untuk me-reboot mesin jarak jauh. (Kami menggunakan dummy IP di sini untuk perintah reboot, pastikan untuk menimpanya dengan DNS / IP komputer Anda). Kemudian buat variabel penghitung, saya dan atur ke 0. Selanjutnya, Anda memiliki loop Anda dengan Start-Sleep menghentikan skrip selama 300 detik (lima menit). Perintah kedua menambahkan satu ke konter.
Nyalakan kembali-Komputer -KomputerNama 127.0.0.1. i = 0. do {Start-Sleep -Detik 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) -atau $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Mesin Jarak Jauh tidak merespons, silakan periksa." } else {Tulis-Output "Reboot Berhasil" }
Lalu kami memiliki kriteria Sementara kami. Kami menggunakan tes Atau untuk memastikan bahwa kegagalan menghasilkan peringatan. Alternatifnya adalah pengulangan skrip tanpa henti menunggu mesin jarak jauh. Untuk memeriksa mesin, kami menggunakan Tes koneksi cmdlet. Untuk kesederhanaan, ini Ping untuk PowerShell. Kami menambahkan parameter -Diam yang memaksanya untuk mengembalikan True atau False daripada hasil paket. Bagian kedua dari pernyataan Atau memeriksa apakah penghitung lebih dari tiga.
Setelah loop selesai, kami ingin membuat output. Itu berarti bahwa kita perlu memeriksa konter kita. Ini adalah pernyataan if / else cepat. Jika lebih besar dari tiga, skrip mengeluarkan bahwa mesin jarak jauh tidak merespons. Jika tidak, berarti reboot berhasil.
Loop Lainnya
Ada dua jenis loop lain yang tersedia di PowerShell. Mereka agak terkait dengan dua loop sebelumnya, mereka hanya tidak seperti yang biasa digunakan. A For loop bekerja mirip dengan contoh While. Anda menetapkan semua kriteria Anda dalam evaluasi, lalu atur cmdlet Anda.
untuk ($ i = 0; $ i -lt 10; $ i ++) {Langkah Anda. }
Do Sampai loop seperti Do loop, Anda hanya mengubah pernyataan While ke Hingga. Dalam contoh script, itu akan sama dengan perilaku. Ini adalah pilihan gaya, tetapi Do While lebih fleksibel dalam situasi lain. Jadi jika Anda hanya mengingat satu, Do While lebih berguna.
PowerShell memiliki bantuan untuk masing-masing loop ini juga. Anda bisa mendapatkan bantuan dengan menambahkan tentang sebelum nama loop di Dapatkan-Bantuan. Anda kemudian dapat melihat contoh dan kiat lain untuk setiap jenis. Ini harus bermanfaat jika Anda mengalami kesulitan.
Terus Berkembang Bersama Anda
Pada titik ini, Anda memiliki sebagian besar keterampilan untuk mulai membangun skrip yang kuat. Apakah mengotomatisasi rig rumah Anda 15 Tugas Lanjutan yang Dapat Ditangani PowerShell di Windows 10PowerShell mirip dengan command prompt, tetapi lebih baik. Ini alat administrasi sistem yang kuat. Kami telah menyusun 15 tugas, beberapa sederhana, beberapa kompleks, yang mendapat manfaat dari keajaiban PowerShell. Baca lebih banyak atau menghemat waktu di tempat kerja, loop membantu skrip Anda melakukan lebih banyak. Menggabungkan loop ini dengan penanganan kesalahan memindahkan skrip Anda melampaui dasar-dasar Tangani Kesalahan PowerShell Seperti Bos Dengan Kiat IniPenanganan kesalahan PowerShell memiliki empat bagian. Pelajari cara memperbaiki jika ada kesalahan dan lainnya di Microsoft PowerShell. Baca lebih banyak . Ini membuka pintu ke bahasa yang lebih maju.
Apakah skrip PowerShell yang pintar yang Anda buat menggunakan loop? Bagikan dengan kami di komentar.
Michael tidak menggunakan Mac ketika mereka ditakdirkan, tetapi ia dapat membuat kode dalam Applescript. Dia memiliki gelar dalam Ilmu Komputer dan Bahasa Inggris; dia sudah menulis tentang Mac, iOS, dan video game untuk sementara waktu sekarang; dan dia telah menjadi monyet TI siang hari selama lebih dari satu dekade, berspesialisasi dalam scripting dan virtualisasi.