কম্পিউটার

পাওয়ারশেল:ফ্রি ডিস্ক স্পেস এবং ডিস্কের ব্যবহার পরীক্ষা করুন

এই নিবন্ধে আমরা আপনাকে দেখাব কিভাবে PowerShell ব্যবহার করে একটি স্থানীয় বা দূরবর্তী উইন্ডোজ হোস্টে বিনামূল্যে ডিস্কের স্থান এবং ডিস্কের ব্যবহার পরীক্ষা করতে হয়। এছাড়াও, ফাঁকা স্থানের থ্রেশহোল্ড অতিক্রম করা হলে কীভাবে একটি পপ-আপ বিজ্ঞপ্তি বা ইমেলের মাধ্যমে প্রশাসককে অবহিত করবেন তা বিবেচনা করুন৷

WMI এবং PowerShell এর মাধ্যমে উইন্ডোজে ড্রাইভ ফ্রি স্পেস কিভাবে চেক করবেন?

আপনি Win32_logicalDisk ব্যবহার করে Windows এ আপনার লজিক্যাল ড্রাইভ সম্পর্কে তথ্য পেতে পারেন WMI ক্লাস।

নীচের কমান্ডটি আপনার কম্পিউটারে লজিক্যাল ড্রাইভ সম্পর্কে সমস্ত তথ্য প্রদর্শন করবে:

Get-WmiObject -Class Win32_LogicalDisk

আপনি যদি নতুন PowerShell Core 7.x ব্যবহার করেন তবে মনে রাখবেন যে এই PowerShell সংস্করণে WMI সমর্থিত নয় (যেহেতু PowerShell কোর .Net Core এর উপর ভিত্তি করে)। আপনি যদি Get-WmiObject কমান্ড চালানোর চেষ্টা করেন, আপনি নিম্নলিখিত ত্রুটিটি দেখতে পাবেন:The term 'Get-WmiObject' is not recognized as a name of a cmdlet, function, script file, or executable program . WMI এর পরিবর্তে CIM ব্যবহার করুন, উদাহরণস্বরূপ:

Get-CimInstance win32_logicaldisk

পাওয়ারশেল:ফ্রি ডিস্ক স্পেস এবং ডিস্কের ব্যবহার পরীক্ষা করুন

FreeSpace প্রপার্টি প্রতিটি ড্রাইভে অবশিষ্ট বাইটে ফাঁকা স্থানের পরিমাণ ধারণ করে। এটিকে আরও সুবিধাজনক করতে, আপনি এটিকে GB তে রূপান্তর করতে পারেন এবং প্রতিটি লজিক্যাল ডিস্কে %-এ (মোট ডিস্কের আকারের সাথে খালি স্থানের অনুপাত হিসাবে) মুক্ত স্থানের পরিমাণ প্রদর্শন করতে পারেন। আপনি নিম্নলিখিত PowerShell স্ক্রিপ্ট ব্যবহার করতে পারেন:

Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft

পাওয়ারশেল:ফ্রি ডিস্ক স্পেস এবং ডিস্কের ব্যবহার পরীক্ষা করুন

স্ক্রিপ্টটি লজিক্যাল ড্রাইভ, তাদের আকার এবং ফাঁকা স্থান শতাংশের একটি তালিকা প্রদর্শন করে।

PowerShell কোরে এই স্ক্রিপ্টটি ব্যবহার করতে, শুধু Get-WmiObject প্রতিস্থাপন করুন Get-CimInstance সহ .

আপনি যদি কেবল একটি ডিস্কে খালি স্থান সম্পর্কে তথ্য প্রদর্শন করতে না চান তবে এর পরিবর্তে কিছু পদক্ষেপ নিন (একটি ই-মেইল পাঠান বা একটি পপআপ বার্তা দেখান) যদি নির্দিষ্ট থ্রেশহোল্ডের চেয়ে কম ফাঁকা জায়গা থাকে তবে আপনি ব্যবহার করতে পারেন নিচের PowerShell স্ক্রিপ্ট:

$percentWarning = 20
$percentCritcal = 5
$ListDisk = Get-WmiObject -Class Win32_LogicalDisk
Foreach($Disk in $ListDisk){
if ($Disk.size -ne $NULL) {
$DiskFreeSpace = ($Disk.freespace/1GB).ToString('F2')
$DiskFreeSpacePercent = [Math]::Round(($Disk.freespace/$Disk.size) * 100, 2)
if($DiskFreeSpacePercent -lt $percentWarning){
$Message= "Warning!"
if($DiskFreeSpacePercent -lt $percentCritcal){
$Message= "Alert!"
}
$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("Disk $($Disk.DeviceID) has only $DiskFreeSpace GB of free space left",0,$Message,48)
}
}
}

পাওয়ারশেল:ফ্রি ডিস্ক স্পেস এবং ডিস্কের ব্যবহার পরীক্ষা করুন

এই স্ক্রিপ্টটি একটি ডিস্কে অবশিষ্ট ফাঁকা স্থানের থ্রেশহোল্ড মান সেট করে — 5% এবং 20%। কোনো ডিস্কে ফাঁকা স্থানের পরিমাণ নির্দিষ্ট মানের নিচে হলে, একটি মডেল তথ্য উইন্ডো প্রদর্শিত হবে। আপনি এটি একটি পপ-আপ বিজ্ঞপ্তি হিসাবে দেখাতে পারেন বা অবিলম্বে ডিস্ক ক্লিনআপ টুল চালাতে পারেন (cleanmgr.exe )।

আপনি যদি সমস্যার প্রশাসককে ইমেল করতে চান, তাহলে আপনি Send-MailMessage-এর মাধ্যমে একটি SMTP সার্ভারের মাধ্যমে একটি ইমেল পাঠাতে পারেন (এটি এক্সচেঞ্জ হোস্ট বা অন্য কোনো SMTP পরিষেবা হতে পারে, এমনকি বিল্ট-ইন Windows সার্ভার SMTP ভূমিকাও করতে পারে)। cmdlet:

Send-MailMessage -To “[email protected]” -From “$env:[email protected]” -Subject “Insufficient disk space on server $env:computername” -Body “Disk $($Disk.DeviceID) has only $DiskFreeSpace GB left” -Credential (Get-Credential) -SmtpServer smtp.woshub.com -Port 587

এই উদাহরণে, আপনাকে SMTP হোস্টের সাথে ইন্টারেক্টিভভাবে সংযোগ করতে শংসাপত্রগুলি প্রবেশ করতে হবে৷ আপনি প্রমাণীকরণ ছাড়া বিশ্বস্ত হোস্ট থেকে বার্তা গ্রহণ করার জন্য আপনার SMTP হোস্ট কনফিগার করতে পারেন, বা ফাইলে সংরক্ষিত শংসাপত্রগুলি ব্যবহার করে SMTP প্রমাণীকরণ কনফিগার করতে পারেন (ইমেল পাঠানোর জন্য পরিচালিত পরিষেবা অ্যাকাউন্টগুলি ব্যবহার করা সম্ভব নয়)৷

আপনি টাস্ক শিডিউলার ব্যবহার করে নিয়মিত PowerShell স্ক্রিপ্ট চালাতে পারেন বা এটি একটি Windows পরিষেবা হিসাবে কনফিগার করা যেতে পারে। যদি এই Windows হোস্টে পর্যাপ্ত ফাঁকা জায়গা না থাকে, তাহলে একজন প্রশাসক একটি বিজ্ঞপ্তি পাবেন৷

PowerShell এর মাধ্যমে রিমোট উইন্ডোজ হোস্ট থেকে বিনামূল্যে ডিস্ক স্পেস পান

Invoke-Command cmdlet দূরবর্তী কম্পিউটারে অবশিষ্ট ফাঁকা স্থান পরীক্ষা করতে একটি PS স্ক্রিপ্ট চালানোর জন্য ব্যবহার করা যেতে পারে।

Invoke-Command -ComputerName srv01,srv02,srv03 -FilePath "C:\PS\checkfreespace.ps1"

আপনি যে সার্ভারগুলিতে খালি স্থানের পরিমাণ পরীক্ষা করতে চান সেগুলি আপনার ডোমেনে থাকলে, আপনি Get-ADComputer cmdlet ব্যবহার করে সক্রিয় ডিরেক্টরি থেকে সেগুলির তালিকা পেতে পারেন এবং প্রতিটি হোস্টের বিরুদ্ধে স্ক্রিপ্ট চালাতে পারেন:

$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows Server*" -and enabled -eq "true"').Name
Invoke-Command -ComputerName $computers -FilePath "C:\PS\checkfreespace.ps1" -ErrorAction SilentlyContinue

আপনি দূরবর্তী কম্পিউটার থেকে WMI ডেটা পেতে RemoteWMI ব্যবহার করতে পারেন:

Get-WmiObject -Class Win32_logicalDisk -ComputerName srv01,srv02,srv03

এই নির্দেশিকাটি ডিস্কের স্থান নিরীক্ষণের জন্য সবচেয়ে সহজ স্ব-নির্মিত সমাধান বর্ণনা করে। আপনার যদি অনেকগুলি হোস্ট থাকে যেগুলিকে নিরীক্ষণ করা দরকার, তবে একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত মনিটরিং সিস্টেম ব্যবহার করা ভাল (যেমন Zabbix, Icinga, PRTG, Nagios, ইত্যাদি)৷


  1. উইন্ডোজ 10 এ হার্ড ডিস্কের স্থান খালি করার 10টি উপায়

  2. কিভাবে ম্যাকে ডিস্ক স্পেস খালি করা যায়

  3. Windows 10, 7, 8 এ কিভাবে ডিস্ক স্পেস খালি করা যায়

  4. লিনাক্সে কীভাবে ডিস্ক স্পেস পরীক্ষা এবং পরিচালনা করবেন