এই নিবন্ধে আমরা আপনাকে দেখাব কিভাবে PowerShell ব্যবহার করে একটি স্থানীয় বা দূরবর্তী উইন্ডোজ হোস্টে বিনামূল্যে ডিস্কের স্থান এবং ডিস্কের ব্যবহার পরীক্ষা করতে হয়। এছাড়াও, ফাঁকা স্থানের থ্রেশহোল্ড অতিক্রম করা হলে কীভাবে একটি পপ-আপ বিজ্ঞপ্তি বা ইমেলের মাধ্যমে প্রশাসককে অবহিত করবেন তা বিবেচনা করুন৷
WMI এবং PowerShell এর মাধ্যমে উইন্ডোজে ড্রাইভ ফ্রি স্পেস কিভাবে চেক করবেন?
আপনি Win32_logicalDisk ব্যবহার করে Windows এ আপনার লজিক্যাল ড্রাইভ সম্পর্কে তথ্য পেতে পারেন WMI ক্লাস।
নীচের কমান্ডটি আপনার কম্পিউটারে লজিক্যাল ড্রাইভ সম্পর্কে সমস্ত তথ্য প্রদর্শন করবে:
Get-WmiObject -Class Win32_LogicalDisk
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
আপনি টাস্ক শিডিউলার ব্যবহার করে নিয়মিত 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