Bagaimana Powershell Foreach, While, dan Loop Lainnya Bekerja

Bagaimana Powershell Foreach, While, dan Loop Lainnya Bekerja

Langkah pertama yang penting dalam mempelajari pemrograman adalah bekerja dengan loop. Untungnya, PowerShell terus berkembang dengan keterampilan Anda.





gunakan iphone sebagai mikrofon untuk pc melalui usb

Anda dapat membingkai perintah yang ada yang Anda gunakan setiap hari di dalam loop untuk menghemat waktu dan tenaga. Skrip Anda melakukan pekerjaan berat saat Anda 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 membicarakan cara PowerShell menangani data.





Seperti kebanyakan bahasa pemrograman modern, PowerShell berorientasi objek . Segala sesuatu di PowerShell adalah sebuah objek, artinya bahkan variabel memiliki properti dan fungsi yang diperluas . Properti itulah mengapa Anda dapat mengatur pencarian Anda ke variabel, dan berakhir dengan array hasil.

$yourVar = Get-ChildItem *
foreach ($file in $yourVar){
Your Steps
}

Dalam beberapa bahasa, memproses larik ini akan menjadi proses multilangkah. Pertama, dapatkan panjangnya dan kemudian hitung setiap langkah.



Di PowerShell, Anda menelusuri larik dan melakukan tindakan pada masing-masing larik menggunakan ForEach. Ini menghemat beberapa baris kode, yang berguna jika Anda memiliki skrip yang lebih panjang. Misalnya, berikut ini adalah skrip kecil yang akan menggunakan beberapa loop Powershell ForEach. Ini membuat arsip ZIP dari semua file Anda yang belum Anda buka dalam 30 hari.

Membangun Sistem Arsip File Menggunakan ForEach Loops

Mari kita uraikan langkah-langkahnya. Kau gunakan Dapatkan-AnakItem untuk mendapatkan semua file di folder Dokumen. Variabel lingkungan $env:PROFIL PENGGUNA menjalankan skrip menggunakan profil saat ini. Variabel ini lebih portabel daripada jalur hardcoded. Hasil pencarian itu ditugaskan ke variabel $ MyDocs . Kami kemudian membuat loop ForEach kami dengan membuatnya melangkah melalui masing-masing $Doc di $MyDocs .





$oldDocs = @()
$MyDocs = Get-ChildItem -Path '$($env:USERPROFILE)Documents' -Recurse
foreach ($doc in $MyDocs){
if($doc.LastAccessTime -lt $(Get-Date).addDays(-30)){
$oldDocs += $doc
}
}
$ArchiveFolder = New-Item -Path '$($env:USERPROFILE)Documents$((Get-Date -Format MMddyy).toString())' -ItemType Directory
foreach ($doc in $oldDocs){
Move-Item -Path $doc.FullName -Destination '$($ArchiveFolder.FullName)$($doc.Name)' -Confirm $false
}
$source = $ArchiveFolder.FullName
$destination = '$($env:USERPROFILE)Documents$($ArchiveFolder.Name).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
}

Di dalam loop, kami memeriksa untuk melihat apakah setiap file Waktu Akses Terakhir properti lebih dari 30 hari. Kami mendapatkan ini dengan Dapatkan-Tanggal cmdlet, dan menggunakan TambahHari fungsi dengan negatif tiga puluh. Jika ya, kami menambahkan file ke $myOldDocs Himpunan. Setelah pengurutan file selesai, kami kemudian mengambil array lengkap kami dan membuat file zip. Proses ini sedikit lebih rumit karena melibatkan sedikit .NET. Jangan khawatir jika Anda tidak memahaminya -- Anda dapat mencuri kodenya dari dokumen bantuan TechNet ini .

Untuk menguraikan apa yang terjadi di sini: Kami akan memindahkan semua file lama kami ke direktori baru yang diberi nama untuk tanggal hari ini selama 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 terjadwal untuk dijalankan sebulan sekali. Anda akan menghemat sedikit ruang dan menjaga folder Dokumen Anda tetap bersih.





While dan Do While: Loop on Condition

Jika Anda ingin menjalankan loop hanya ketika kondisi tertentu terpenuhi, Anda menggunakan loop While. Jika Anda menggunakan variabel untuk melacak penghitungan, atur terlebih dahulu.

i=0
while(i<10){
Your Steps
i+=1
}

Masalahnya adalah jika Anda tidak menggunakan penghitung, Anda mungkin ingin kode Anda dijalankan setidaknya sekali meskipun pengujiannya benar. Ini adalah kasus dengan contoh skrip di bawah ini. Jadi dalam kasus tersebut, Anda ingin menggunakan loop Do-While . Sintaksnya sedikit berbeda.

do{
Your Steps
}while(Conditional Statement)

Menggunakan ini tidak begitu jelas bagi programmer pemula. Melakukan skrip sehari-hari yang khas, Anda mungkin tidak sering menemuinya. Di mana mereka sangat berguna adalah membuat pengatur waktu darurat untuk menguji keberhasilan suatu proses.

penggunaan cpu 100 windows 7 tidak ada yang berjalan

Kami akan membuat skrip cepat untuk mem-boot ulang mesin jarak jauh dan memperingatkan jika tidak muncul kembali dalam waktu 15 menit. Skenario ini mengasumsikan itu adalah server rumah atau mesin lain yang tidak sering melakukan reboot. Jangan ragu untuk menyesuaikan waktu jika komputer Anda biasanya muncul lebih cepat.

Reboot dan Periksa: Menggunakan Do-While Loop

Skrip ini sedikit lebih sederhana. Pertama, Anda menggunakan Restart-Komputer perintah untuk me-reboot mesin jarak jauh. (Kami menggunakan IP dummy 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 Do dengan Start-Sleep menghentikan skrip selama 300 detik (lima menit). Perintah kedua menambahkan satu ke penghitung.

Restart-Computer -ComputerName 127.0.0.1
i=0
do{
Start-Sleep -Seconds 300
$i += 1
}while((!(Test-Connection 127.0.0.1 -Quiet)) -or $i -gt 3)
if($i -gt 3){
Write-Ouput 'Remote Machine not responding, please check.'
}
else{
Write-Output 'Reboot Succeeded'
}

Kemudian kami memiliki kriteria While kami. Kami menggunakan tes Atau untuk memastikan bahwa kegagalan menghasilkan peringatan. Alternatifnya adalah skrip berulang tanpa henti menunggu mesin jarak jauh. Untuk memeriksa mesin, kami menggunakan Tes koneksi cmdlet. Untuk kesederhanaan, ini adalah Ping untuk PowerShell. Kami menambahkan parameter -Diam yang memaksanya untuk mengembalikan True atau False daripada hasil paket. Bagian kedua dari pernyataan Or memeriksa apakah penghitung lebih dari tiga.

Setelah loop selesai, kami ingin membuat output. Itu berarti 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, itu menunjukkan bahwa reboot berhasil.

Loop lainnya

Ada dua jenis loop lain yang tersedia di PowerShell. Mereka agak terkait dengan dua loop sebelumnya, hanya saja tidak seperti yang biasa digunakan. A For loop bekerja mirip dengan contoh While. Anda mengatur semua kriteria Anda dalam evaluasi, lalu mengatur cmdlet Anda.

for($i = 0;$i -lt 10;$i++){
Your Steps
}

Perulangan Do Hingga seperti perulangan Do While, Anda tinggal mengubah pernyataan While menjadi Hingga. Dalam skrip contoh, itu akan sama sejauh perilaku. Ini adalah pilihan gaya, tetapi Do While lebih fleksibel dalam situasi lain. Jadi jika Anda hanya mengingat satu, Do While lebih bermanfaat.

PowerShell juga memiliki bantuan untuk setiap loop ini. Anda bisa mendapatkan bantuan dengan menambahkan tentang sebelum nama loop di Get-Help. Anda kemudian dapat melihat contoh dan tip lainnya untuk setiap jenis. Ini akan membantu jika Anda terjebak.

Terus Bertumbuh Bersama Anda

Pada titik ini, Anda memiliki sebagian besar keterampilan untuk mulai membuat skrip yang kuat. Baik mengotomatiskan rig rumah Anda atau menghemat waktu di tempat kerja, loop membantu skrip Anda untuk berbuat lebih banyak. Menggabungkan loop ini dengan penanganan kesalahan membuat skrip Anda melampaui dasar-dasarnya. Ini membuka pintu ke bahasa yang lebih maju.

Apa skrip PowerShell pintar yang Anda buat menggunakan loop? Bagikan dengan kami di komentar.

Membagikan Membagikan Menciak Surel Hapus File dan Folder Windows Ini untuk Mengosongkan Ruang Disk

Perlu mengosongkan ruang disk di komputer Windows Anda? Berikut adalah file dan folder Windows yang dapat dihapus dengan aman untuk mengosongkan ruang disk.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • PowerShell
  • Skrip
Tentang Penulis Michael McConnell(44 Artikel Diterbitkan)

Michael tidak menggunakan Mac ketika mereka hancur, tetapi dia dapat membuat kode di Applescript. Dia memiliki gelar di bidang Ilmu Komputer dan Bahasa Inggris; dia telah menulis tentang Mac, iOS, dan video game untuk sementara waktu sekarang; dan dia telah menjadi monyet TI siang hari selama lebih dari satu dekade, yang berspesialisasi dalam skrip dan virtualisasi.

cara menghubungkan wii ke tv dengan hdmi
More From Michael McConnell

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan