इस लेख में हम आपको दिखाएंगे कि पावरशेल का उपयोग करके स्थानीय या दूरस्थ विंडोज होस्ट पर मुफ्त डिस्क स्थान और डिस्क उपयोग की जांच कैसे करें। साथ ही, इस बात पर विचार करें कि खाली स्थान सीमा पार होने पर व्यवस्थापक को पॉप-अप अधिसूचना या ईमेल के साथ कैसे सूचित किया जाए।
WMI और PowerShell के साथ विंडोज़ पर डिस्क मुक्त स्थान की जांच कैसे करें?
आप Win32_logicDisk . का उपयोग करके विंडोज़ में अपने लॉजिकल ड्राइव के बारे में जानकारी प्राप्त कर सकते हैं 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
फ्रीस्पेस संपत्ति में प्रत्येक ड्राइव पर छोड़े गए बाइट्स में खाली स्थान की मात्रा होती है। इसे और अधिक सुविधाजनक बनाने के लिए, आप इसे जीबी में परिवर्तित कर सकते हैं और प्रत्येक तार्किक डिस्क पर खाली स्थान की मात्रा को% में प्रदर्शित कर सकते हैं (जैसे कि खाली स्थान का कुल डिस्क आकार के अनुपात के रूप में)। आप निम्न पावरशेल स्क्रिप्ट का उपयोग कर सकते हैं:
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 Core में इस स्क्रिप्ट का उपयोग करने के लिए, बसGet-WmiObject
. को बदलें Get-CimInstance
. के साथ . यदि आप केवल डिस्क पर खाली स्थान के बारे में जानकारी प्रदर्शित नहीं करना चाहते हैं, लेकिन इसके बजाय कुछ कार्रवाई करें (ई-मेल भेजें या पॉपअप संदेश दिखाएं) यदि निर्दिष्ट सीमा से कम खाली स्थान है, तो आप इसका उपयोग कर सकते हैं नीचे दी गई पॉवरशेल स्क्रिप्ट:
$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 भूमिका भी करेगा) सीएमडीलेट:
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 होस्ट से निःशुल्क डिस्क स्थान प्राप्त करें
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