কিভাবে পাওয়ারশেল পূর্বাভাস, যখন, এবং অন্যান্য লুপ কাজ করে

কিভাবে পাওয়ারশেল পূর্বাভাস, যখন, এবং অন্যান্য লুপ কাজ করে

প্রোগ্রামিং শেখার একটি গুরুত্বপূর্ণ প্রথম ধাপ হল লুপগুলির সাথে কাজ করা। সৌভাগ্যক্রমে, পাওয়ারশেল আপনার দক্ষতার সাথে বাড়তে থাকে।





কিভাবে PS4 থেকে ব্যবহারকারীদের সরানো যায়

আপনি সময় এবং প্রচেষ্টা বাঁচাতে লুপগুলির ভিতরে প্রতিদিন যে বিদ্যমান কমান্ডগুলি ব্যবহার করেন তা ফ্রেম করতে পারেন। আপনার স্ক্রিপ্টগুলি ভারী উত্তোলন করে যখন আপনি MakeUseOf- এ আরও নিবন্ধ পড়ার গুরুত্বপূর্ণ কাজ করেন!





প্রতিটি লুপের জন্য পাওয়ারশেল: উন্নত ডেটা হ্যান্ডলিংয়ের দরজা

ForEach হল ForEach- অবজেক্টের উপনাম। (একটি উপনাম পাওয়ারশেলের কমান্ডের জন্য একটি শর্টকাট।) পাওয়ারশেল যেভাবে ডেটা পরিচালনা করে সে সম্পর্কে কথা বলার জন্য এটি একটি ভাল সময়।





বেশিরভাগ আধুনিক প্রোগ্রামিং ভাষার মতো, পাওয়ারশেল বস্তু ভিত্তিক। পাওয়ারশেলের সবকিছুই একটি বস্তু, যার অর্থ হল ভেরিয়েবলও প্রসারিত বৈশিষ্ট্য এবং ফাংশন আছে । সেই বৈশিষ্ট্যের কারণেই আপনি আপনার অনুসন্ধানগুলি একটি পরিবর্তনশীলতে সেট করতে পারেন এবং ফলাফলগুলির একটি অ্যারে দিয়ে শেষ করতে পারেন।

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

কিছু ভাষায়, এই অ্যারে প্রক্রিয়াকরণ একটি মাল্টিস্টেপ প্রক্রিয়া হবে। প্রথমে, দৈর্ঘ্য পাওয়া এবং তারপরে প্রতিটি ধাপ গণনা করা।



PowerShell এ, আপনি অ্যারের মধ্য দিয়ে যান এবং ForEach ব্যবহার করে প্রত্যেকের উপর ক্রিয়া সম্পাদন করুন। এটি আপনাকে কোডের বেশ কয়েকটি লাইন সংরক্ষণ করে, যা আপনার যদি দীর্ঘ স্ক্রিপ্ট থাকে তবে সহায়ক। উদাহরণস্বরূপ, নিম্নলিখিতটি একটি ছোট স্ক্রিপ্ট যা পাওয়ারশেল ফরএইচ লুপ ব্যবহার করবে। এটি আপনার সমস্ত ফাইলের একটি জিপ সংরক্ষণাগার তৈরি করে যা আপনি 30 দিনের মধ্যে খুলেননি।

ForEach Loops ব্যবহার করে একটি ফাইল আর্কাইভ সিস্টেম তৈরি করা

আসুন ধাপগুলি ভাঙি। তুমি ব্যাবহার কর Get-ChildItem ডকুমেন্টস ফোল্ডারে সব ফাইল পেতে। পরিবেশ পরিবর্তনশীল $ env: USERPROFILE বর্তমান প্রোফাইল ব্যবহার করে স্ক্রিপ্ট চালায়। এই ভেরিয়েবলটি হার্ডকোড করা পথের চেয়ে বেশি পোর্টেবল। সেই অনুসন্ধানের ফলাফলগুলি ভেরিয়েবলের জন্য নির্ধারিত হয় $ MyDocs । তারপরে আমরা আমাদের ForEach লুপ তৈরি করি একে একে একে একে ধাপে ধাপে $ MyDocs এ $ Doc





$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
}

লুপের ভিতরে, আমরা প্রতিটি ফাইল আছে কিনা তা পরীক্ষা করে দেখি LastAccessTime সম্পত্তি 30 দিনের পুরনো। আমরা এটি দিয়ে পাই প্রাপ্তির তারিখ cmdlet, এবং ব্যবহার করে AddDays negativeণাত্মক ত্রিশ সঙ্গে কাজ। যদি এটি হয়, আমরা ফাইলটিতে যোগ করি $ myOldDocs অ্যারে ফাইল সাজানোর কাজ শেষ হওয়ার পর, আমরা আমাদের সম্পূর্ণ অ্যারে নিয়ে একটি জিপ ফাইল তৈরি করি। এই প্রক্রিয়াটি একটু বেশি জটিল কারণ এটি একটি .NET এর একটি বিট আহ্বান করে। আপনি যদি এটি বেশ বুঝতে না পারেন তবে চিন্তা করবেন না - আপনি কোডটি চুরি করতে পারেন এই টেকনেট সাহায্য নথি

এখানে কি ঘটছে তা ভাঙ্গার জন্য: আমরা আমাদের পুরানো ফাইলগুলিকে 30 দিনের বেশি পুরনো আজকের তারিখের নামে একটি নতুন ডিরেক্টরিতে স্থানান্তর করব। একবার সেই ফোল্ডারটি তৈরি হয়ে গেলে, আমাদের একই নামের জিপ আর্কাইভ তৈরি করতে হবে। আর্কাইভ সফল হয়েছে কিনা এবং .ZIP ফাইল আছে কিনা তা নিশ্চিত করার জন্য আমরা পরীক্ষা করব, এবং তারপর নতুন ফোল্ডারটি মুছে ফেলব। মাসে একবার চালানোর জন্য এটি একটি নির্ধারিত কাজ হিসাবে সেট করুন। আপনি নিজেকে একটু জায়গা বাঁচাবেন এবং আপনার ডকুমেন্টস ফোল্ডার পরিষ্কার রাখবেন।





While এবং do while: Loops অন কন্ডিশন

আপনি যদি একটি নির্দিষ্ট শর্ত পূরণ হলেই শুধুমাত্র একটি লুপ চালাতে চান, আপনি একটি while লুপ ব্যবহার করেন। যদি আপনি গণনা ট্র্যাক করার জন্য একটি পরিবর্তনশীল ব্যবহার করছেন, তাহলে প্রথমে সেট করুন।

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

সমস্যা হল যে আপনি যদি কাউন্টার ব্যবহার না করেন, আপনি পরীক্ষাটি সত্য হলেও অন্তত একবার আপনার কোডটি চালাতে চান। নীচের উদাহরণ স্ক্রিপ্টের ক্ষেত্রে এটি। সুতরাং সেই ক্ষেত্রে, আপনি একটি Do-while লুপ ব্যবহার করতে চান। বাক্য গঠন একটু ভিন্ন।

do{
Your Steps
}while(Conditional Statement)

এগুলি ব্যবহার করা একজন নবীন প্রোগ্রামারের কাছে ততটা স্পষ্ট নয়। সাধারণত প্রতিদিন স্ক্রিপ্টিং করা, আপনি তাদের মধ্যে প্রায়ই চালাতে পারবেন না। যেখানে তারা বিশেষভাবে কাজে আসে সেখানে একটি প্রক্রিয়ার সফলতা পরীক্ষা করার জন্য একটি অস্থায়ী টাইমার তৈরি করা।

কেন হার্ডওয়্যার ত্বরণ সমস্যা সৃষ্টি করে

আমরা একটি রিমোট মেশিন রিবুট করার জন্য একটি দ্রুত স্ক্রিপ্ট তৈরি করতে যাচ্ছি এবং 15 মিনিটের মধ্যে ফিরে না এলে সতর্ক করুন। এই দৃশ্যকল্পটি অনুমান করে যে এটি একটি হোম সার্ভার বা অন্যান্য মেশিন যা প্রায়শই রিবুট হয় না। যদি আপনার কম্পিউটারটি সাধারণত দ্রুত আসে তবে নির্দ্বিধায় সময় সামঞ্জস্য করুন।

রিবুট করুন এবং চেক করুন: ডু-উইল লুপ ব্যবহার করে

এই স্ক্রিপ্টটি একটু সহজ। প্রথমে, আপনি কম্পুটার পুনরাই আরম্ভ করা রিমোট মেশিন রিবুট করার কমান্ড। (আমরা এখানে রিবুট কমান্ডের জন্য একটি ডামি আইপি ব্যবহার করেছি, আপনার কম্পিউটারের ডিএনএস/আইপি দিয়ে এটিকে ওভাররাইট করতে ভুলবেন না)। তারপর কাউন্টার ভেরিয়েবল তৈরি করুন, আমি এবং এটিকে 0 এ সেট করুন। এরপর, আপনার ডু লুপ আছে স্টার্ট-স্লিপ 300 সেকেন্ড (পাঁচ মিনিট) স্ক্রিপ্ট বন্ধ করার সাথে। একটি দ্বিতীয় কমান্ড কাউন্টারে একটি যোগ করে।

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'
}

তারপর আমরা আমাদের সময় মানদণ্ড আছে। একটি ব্যর্থতা একটি সতর্কতা তৈরি করে তা নিশ্চিত করার জন্য আমরা একটি Or পরীক্ষা ব্যবহার করি। বিকল্প হল স্ক্রিপ্ট লুপিং অবিরাম দূরবর্তী মেশিনের জন্য অপেক্ষা করছে। মেশিনটি পরীক্ষা করার জন্য, আমরা পরীক্ষামূলক সংযোগ cmdlet। সরলতার জন্য, এটি পাওয়ারশেলের জন্য পিং। আমরা প্যারামিটার যোগ করি -চুপ যা প্যাকেটের ফলাফলের পরিবর্তে সত্য বা মিথ্যা ফিরিয়ে দিতে বাধ্য করে। Or স্টেটমেন্টের দ্বিতীয় অংশ কাউন্টার তিনটির বেশি কিনা তা পরীক্ষা করে।

একবার লুপ সম্পূর্ণ হলে, আমরা আউটপুট তৈরি করতে চাই। তার মানে আমাদের কাউন্টার চেক করতে হবে। এটি একটি দ্রুত if/else স্টেটমেন্ট। যদি এটি তিনটির বেশি হয়, স্ক্রিপ্ট আউটপুট দেয় যে রিমোট মেশিন সাড়া দিচ্ছে না। যদি এটি না হয় তবে এটি আউটপুট দেয় যে রিবুট সফল হয়েছিল।

অন্যান্য লুপ

পাওয়ারশেলে আরও দুটি ধরণের লুপ পাওয়া যায়। এগুলি কিছুটা পূর্ববর্তী দুটি লুপের সাথে সম্পর্কিত, সেগুলি সাধারণভাবে ব্যবহৃত হয় না। A for loop একইভাবে while উদাহরণের মত কাজ করে। আপনি মূল্যায়নে আপনার সমস্ত মানদণ্ড সেট করুন, তারপরে আপনার cmdlets সেট করুন।

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

যতক্ষণ না লুপগুলি Do while loops এর মত হয়, আপনি শুধু while স্টেটমেন্টটি ততক্ষণ পরিবর্তন করুন। উদাহরণ স্ক্রিপ্টে, এটি আচরণের মতোই হবে। এটি একটি শৈলী পছন্দ, কিন্তু Do while অন্যান্য পরিস্থিতিতে আরো বহুমুখী। সুতরাং যদি আপনি শুধুমাত্র একটি মনে রাখেন, ডু ওয়াইলে আরো দরকারী।

পাওয়ারশেলের এই প্রতিটি লুপের জন্যও সহায়তা রয়েছে। আপনি যোগ করে সাহায্য পেতে পারেন সম্পর্কিত Get-Help এ লুপ নামের আগে। তারপর আপনি প্রতিটি ধরনের জন্য উদাহরণ এবং অন্যান্য টিপস দেখতে পারেন। আপনি আটকে গেলে এগুলি সহায়ক হওয়া উচিত।

আপনার সাথে বাড়তে থাকুন

এই মুহুর্তে, আপনার কাছে শক্তিশালী স্ক্রিপ্ট তৈরি শুরু করার দক্ষতা রয়েছে। আপনার হোম রিগকে স্বয়ংক্রিয় করা হোক বা কর্মক্ষেত্রে সময় বাঁচানো হোক, লুপগুলি আপনার স্ক্রিপ্টগুলিকে আরও কিছু করতে সাহায্য করে। ত্রুটি পরিচালনার সাথে এই লুপগুলির সংমিশ্রণ আপনার স্ক্রিপ্টিংকে মূল বিষয়গুলির বাইরে নিয়ে যায়। এটি আরও উন্নত ভাষার দরজা খুলে দেয়।

আপনি লুপ ব্যবহার করে তৈরি একটি চতুর PowerShell স্ক্রিপ্ট কি? এটি আমাদের সাথে মন্তব্যগুলিতে ভাগ করুন।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল ডিস্কের জায়গা খালি করতে এই উইন্ডোজ ফাইল এবং ফোল্ডারগুলি মুছুন

আপনার উইন্ডোজ কম্পিউটারে ডিস্ক স্পেস খালি করতে হবে? এখানে উইন্ডোজ ফাইল এবং ফোল্ডার রয়েছে যা ডিস্কের স্থান খালি করার জন্য নিরাপদে মুছে ফেলা যায়।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • শক্তির উৎস
  • স্ক্রিপ্টিং
লেখক সম্পর্কে মাইকেল ম্যাককনেল(44 নিবন্ধ প্রকাশিত)

মাইকেল একটি ম্যাক ব্যবহার করেনি যখন তারা ধ্বংস হয়ে যায়, কিন্তু সে অ্যাপলস্ক্রিপ্টে কোড করতে পারে। তার কম্পিউটার সায়েন্স এবং ইংরেজিতে ডিগ্রি আছে; তিনি কিছুদিন ধরে ম্যাক, আইওএস এবং ভিডিও গেম নিয়ে লিখছেন; এবং তিনি এক দশকেরও বেশি সময় ধরে আইটি বানর, স্ক্রিপ্টিং এবং ভার্চুয়ালাইজেশনে বিশেষজ্ঞ।

উইন্ডোজ 10 এর জন্য কমান্ড প্রম্পটের তালিকা
মাইকেল ম্যাককনেল থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন