विंडोज वर्कस्टेशन और सर्वर पर, विशेष रूप से आरडीएस (रिमोट डेस्कटॉप सर्विसेज) सर्वर पर, पुराने (अप्रयुक्त) उपयोगकर्ता प्रोफाइल को C:\Users से हटाने की नियमित आवश्यकता होती है। किसी भी दूरस्थ डेस्कटॉप सर्वर की मुख्य समस्या स्थानीय ड्राइव पर उपयोगकर्ता प्रोफ़ाइल निर्देशिकाओं के आकार में निरंतर वृद्धि है। इसे अधिकतम उपयोगकर्ता प्रोफ़ाइल आकार (FSRM या NTFS कोटा के साथ) पर कोटा सक्षम करके आंशिक रूप से हल किया जाता है। हालाँकि, यदि बहुत सारे टर्मिनल सर्वर उपयोगकर्ता हैं, तो समय के साथ C:\Users निर्देशिका उपयोगकर्ता प्रोफ़ाइल के साथ बड़ी संख्या में निर्देशिकाएँ जमा करेगी जिनकी अब आवश्यकता नहीं है।
Windows में उपयोगकर्ता प्रोफ़ाइल को मैन्युअल रूप से कैसे हटाएं?
कई नौसिखिए विंडोज व्यवस्थापक C:\Users से उपयोगकर्ता प्रोफ़ाइल फ़ोल्डर को मैन्युअल रूप से हटाने का प्रयास करते हैं। आप ऐसा कर सकते हैं यदि फ़ोल्डर को मैन्युअल रूप से हटाने के बाद, आप रजिस्ट्री कुंजी से इस फ़ोल्डर के लिंक के साथ उपयोगकर्ता प्रोफ़ाइल अनुभाग को हटा देंगे HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ProfileList ।
विंडोज़ में उपयोगकर्ता प्रोफ़ाइल को मैन्युअल रूप से हटाने का सही तरीका सिस्टम गुण खोलना है, उन्नत सिस्टम सेटिंग्स पर जाएं। -> उपयोगकर्ता प्रोफ़ाइल -> सेटिंग , सूची में एक उपयोगकर्ता का चयन करें (स्थानीय ड्राइव पर प्रोफ़ाइल का आकार दिखाया गया आकार कॉलम) और हटाएं क्लिक करें बटन।
लेकिन यह एक मैनुअल तरीका है, और आप इसे स्वचालित करना चाह सकते हैं।
GPO:निर्दिष्ट संख्या दिनों से अधिक पुरानी उपयोगकर्ता प्रोफ़ाइल हटाएं
विंडोज़ में, एक्सएक्स दिनों से पुराने उपयोगकर्ता प्रोफाइल को स्वचालित रूप से हटाने के लिए एक अंतर्निहित समूह नीति है। आप नीति पा सकते हैं सिस्टम पुनरारंभ होने पर निर्दिष्ट संख्या दिनों से अधिक पुरानी उपयोगकर्ता प्रोफ़ाइल हटाएं GPO अनुभाग में कंप्यूटर कॉन्फ़िगरेशन -> व्यवस्थापकीय टेम्पलेट -> सिस्टम -> उपयोगकर्ता प्रोफ़ाइल . आप इस नीति को स्थानीय समूह नीति संपादक (gpedit.msc) में या GPMC.msc में डोमेन नीतियों का उपयोग करके सक्षम कर सकते हैं।
नीति को सक्षम करें और निर्दिष्ट करें कि उपयोगकर्ता प्रोफ़ाइल को कितने दिनों तक सक्रिय माना जाता है। जब यह अवधि समाप्त हो जाती है, तो Windows उपयोगकर्ता प्रोफ़ाइल सेवा अगले पुनरारंभ पर प्रोफ़ाइल को स्वचालित रूप से हटा देगी। 45-90 . की अवधि निर्दिष्ट करने की अनुशंसा की जाती है यहाँ दिन।
इस नीति का उपयोग करते समय, सुनिश्चित करें कि जब कोई सर्वर बंद या पुनरारंभ होता है तो सिस्टम समय के साथ कोई समस्या नहीं होती है ("रिबूट के बाद सिस्टम समय और दिनांक परिवर्तन" लेख देखें)। अन्यथा सक्रिय उपयोगकर्ता प्रोफाइल को हटाया जा सकता है।
प्रोफ़ाइल हटाने की इस स्वचालित विधि से जुड़ी मुख्य समस्याएं सर्वर के पुनरारंभ होने और गैर-चयनात्मकता की प्रतीक्षा कर रही हैं (आप स्थानीय खातों, प्रशासनिक खातों आदि जैसे कुछ उपयोगकर्ता प्रोफ़ाइल को हटाने पर रोक नहीं लगा सकते हैं)। साथ ही, यदि कोई तृतीय-पक्ष सॉफ़्टवेयर (अक्सर यह एक एंटीवायरस होता है) उपयोगकर्ता प्रोफ़ाइल में NTUSER.DAT फ़ाइल को एक्सेस करता है और अंतिम उपयोग की तारीख को अपडेट करता है, तो यह नीति काम नहीं कर सकती है।
Windows में पुराने उपयोगकर्ता प्रोफ़ाइल को हटाने के लिए PowerShell स्क्रिप्ट
ऊपर वर्णित स्वचालित सफाई प्रोफ़ाइल नीति का उपयोग करने के बजाय, आप अक्षम या निष्क्रिय उपयोगकर्ताओं की प्रोफ़ाइल खोजने और निकालने के लिए एक साधारण पावरशेल स्क्रिप्ट का उपयोग कर सकते हैं।
सबसे पहले, आइए C:\Users में सभी उपयोगकर्ता प्रोफ़ाइल फ़ोल्डरों के आकार की गणना करने का प्रयास करें, लेख से एक साधारण स्क्रिप्ट का उपयोग करके PowerShell में निर्देशिका आकार प्राप्त करना:
gci -force 'C:\Users'-ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, '{0:N2} GB' -f ($len / 1Gb)
$sum = $sum + $len
}
“Total size of profiles”,'{0:N2} GB' -f ($sum / 1Gb)
C:\Users में सभी उपयोगकर्ता प्रोफाइल का कुल आकार 31.5 GB है।
आइए उन उपयोगकर्ताओं की सूची प्रदर्शित करते हैं, जिनके प्रोफाइल का उपयोग 60 दिनों से अधिक समय से नहीं किया गया है। उन्हें ढूंढने के लिए, आप प्रोफ़ाइल के LastUseTime फ़ील्ड में मान का उपयोग कर सकते हैं।
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}| Measure-Object
यह पता चला कि मेरे आरडीएस होस्ट पर मेरे 127 निष्क्रिय उपयोगकर्ता खाते थे (प्रोफाइल का कुल आकार लगभग 18 जीबी है)।
इन सभी प्रोफ़ाइलों को हटाने के लिए, उपयोगकर्ता सूची को निकालें-WmiObject पर पुनर्निर्देशित करना पर्याप्त है कमांड (स्क्रिप्ट चलाने से पहले, -WhatIf पैरामीटर का उपयोग करके इसके आउटपुट की दोबारा जांच करने की अनुशंसा की जाती है):
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-30))} | Remove-WmiObject –WhatIf
सिस्टम . जैसे कुछ उपयोगकर्ताओं के प्रोफाइल को न हटाने के लिए और नेटवर्क सेवा खाते, एक स्थानीय व्यवस्थापक खाता, सक्रिय सत्र वाले उपयोगकर्ताओं के खाते, खाता अपवाद सूची), आप स्क्रिप्ट को निम्नानुसार संशोधित कर सकते हैं:
#The list of accounts, which profiles must not be deleted
$ExcludedUsers ="Public","zabbix_agent","svc",”user_1”,”user_2”
$LocalProfiles=Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}
foreach ($LocalProfile in $LocalProfiles)
{
if (!($ExcludedUsers -like $LocalProfile.LocalPath.Replace("C:\Users\","")))
{
$LocalProfile | Remove-WmiObject
Write-host $LocalProfile.LocalPath, "profile deleted” -ForegroundColor Magenta
}
}
आप इस पॉवरशेल स्क्रिप्ट को शटडाउन पर GPO का उपयोग करके या टास्क शेड्यूलर में PoSh स्क्रिप्ट के साथ चला सकते हैं।
प्रोफ़ाइल के स्वत:विलोपन को कॉन्फ़िगर करने से पहले, आपके परिवेश में स्क्रिप्ट का परीक्षण करने की अनुशंसा की जाती है!आप विशिष्ट AD समूह (उदाहरण के लिए, DisabledUsers समूह) में जोड़े गए सभी उपयोगकर्ता प्रोफाइल को स्वचालित रूप से हटाने के लिए स्क्रिप्ट को संशोधित कर सकते हैं:
$users = Get-ADGroupMember -Identity DisabledUsers | Foreach {$_.Sid.Value}
$profiles = Get-WmiObject Win32_UserProfile
$profiles | Where {$users -eq $_.Sid} | Foreach {$_.Delete()}