কম্পিউটার

কিভাবে GPO এবং PowerShell ব্যবহার করে পুরানো ব্যবহারকারীর প্রোফাইল মুছে ফেলবেন?

উইন্ডোজ ওয়ার্কস্টেশন এবং সার্ভারগুলিতে, বিশেষত RDS (রিমোট ডেস্কটপ পরিষেবা) সার্ভারগুলিতে, C:\Users থেকে পুরানো (অব্যবহৃত) ব্যবহারকারী প্রোফাইলগুলি সরানোর নিয়মিত প্রয়োজন রয়েছে। যেকোন রিমোট ডেস্কটপ সার্ভারের প্রধান সমস্যা হল স্থানীয় ড্রাইভে ব্যবহারকারী প্রোফাইল ডিরেক্টরির আকার ক্রমাগত বৃদ্ধি। এটি আংশিকভাবে সর্বাধিক ব্যবহারকারীর প্রোফাইল আকারে (FSRM বা NTFS কোটা সহ) কোটা সক্ষম করে সমাধান করা হয়। যাইহোক, যদি অনেক টার্মিনাল সার্ভার ব্যবহারকারী থাকে, সময়ের সাথে সাথে C:\Users ডিরেক্টরি ব্যবহারকারী প্রোফাইলের সাথে প্রচুর সংখ্যক ডিরেক্টরি জমা করবে যেগুলির আর প্রয়োজন নেই।

উইন্ডোজে ব্যবহারকারীর প্রোফাইল ম্যানুয়ালি কীভাবে মুছবেন?

অনেক নবীন উইন্ডোজ অ্যাডমিনরা C:\Users থেকে একটি ব্যবহারকারী প্রোফাইল ফোল্ডার ম্যানুয়ালি মুছে ফেলার চেষ্টা করে। আপনি এটি করতে পারেন যদি ম্যানুয়ালি ফোল্ডারটি মুছে ফেলার পরে, আপনি রেজিস্ট্রি কী HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ProfileList থেকে এই ফোল্ডারটির লিঙ্ক সহ ব্যবহারকারী প্রোফাইল বিভাগটি মুছে ফেলবেন। .

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

কিভাবে GPO এবং PowerShell ব্যবহার করে পুরানো ব্যবহারকারীর প্রোফাইল মুছে ফেলবেন?

কিন্তু এটি একটি ম্যানুয়াল পদ্ধতি, এবং আপনি এটি স্বয়ংক্রিয় করতে চাইতে পারেন।

GPO:নির্দিষ্ট সংখ্যার দিনের চেয়ে পুরনো ব্যবহারকারী প্রোফাইল মুছুন

উইন্ডোজে, xx দিনের চেয়ে পুরানো ব্যবহারকারী প্রোফাইল স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য একটি অন্তর্নির্মিত গ্রুপ নীতি রয়েছে। আপনি নীতিটি খুঁজে পেতে পারেন সিস্টেম পুনরায় চালু করার সময় একটি নির্দিষ্ট সংখ্যক দিনের চেয়ে পুরানো ব্যবহারকারী প্রোফাইলগুলি মুছুন GPO বিভাগে কম্পিউটার কনফিগারেশন -> প্রশাসনিক টেমপ্লেট -> সিস্টেম -> ব্যবহারকারীর প্রোফাইল . আপনি স্থানীয় গ্রুপ নীতি সম্পাদক (gpedit.msc) বা GPMC.msc এ ডোমেন নীতি ব্যবহার করে এই নীতিটি সক্ষম করতে পারেন।

নীতিটি সক্ষম করুন এবং ব্যবহারকারীর প্রোফাইল কত দিন সক্রিয় বলে বিবেচিত হবে তা নির্দিষ্ট করুন৷ এই সময়কাল শেষ হয়ে গেলে, উইন্ডোজ ব্যবহারকারী প্রোফাইল পরিষেবা পরবর্তী পুনঃসূচনাতে স্বয়ংক্রিয়ভাবে প্রোফাইলটি মুছে ফেলবে। এটি 45-90 সময়কাল নির্দিষ্ট করার সুপারিশ করা হয় এখানে দিন।

কিভাবে GPO এবং PowerShell ব্যবহার করে পুরানো ব্যবহারকারীর প্রোফাইল মুছে ফেলবেন?

এই নীতিটি ব্যবহার করার সময়, নিশ্চিত করুন যে যখন একটি সার্ভার বন্ধ বা পুনঃসূচনা করা হয় তখন সিস্টেমের সময় নিয়ে কোন সমস্যা নেই ("রিবুট করার পরে সিস্টেমের সময় এবং তারিখ পরিবর্তন" নিবন্ধটি দেখুন)। অন্যথায় সক্রিয় ব্যবহারকারী প্রোফাইল মুছে ফেলা হতে পারে.

প্রোফাইল অপসারণের এই স্বয়ংক্রিয় পদ্ধতির সাথে যুক্ত প্রধান সমস্যাগুলি হল সার্ভার পুনরায় চালু হওয়া এবং অ-নির্বাচনের জন্য অপেক্ষা করছে (আপনি স্থানীয় অ্যাকাউন্ট, প্রশাসনিক অ্যাকাউন্ট ইত্যাদির মতো নির্দিষ্ট ব্যবহারকারীর প্রোফাইল মুছে ফেলা নিষিদ্ধ করতে পারবেন না)। এছাড়াও, কিছু তৃতীয় পক্ষের সফ্টওয়্যার (প্রায়শই এটি একটি অ্যান্টিভাইরাস) ব্যবহারকারীর প্রোফাইলে NTUSER.DAT ফাইল অ্যাক্সেস করে এবং শেষ ব্যবহারের তারিখ আপডেট করলে এই নীতিটি কাজ নাও করতে পারে৷

Windows এ পুরানো ব্যবহারকারী প্রোফাইল মুছে ফেলার জন্য PowerShell স্ক্রিপ্ট

উপরে বর্ণিত স্বয়ংক্রিয় ক্লিনআপ প্রোফাইল নীতি ব্যবহার করার পরিবর্তে, আপনি অক্ষম বা নিষ্ক্রিয় ব্যবহারকারীদের প্রোফাইলগুলি খুঁজতে এবং সরাতে একটি সাধারণ 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৷

কিভাবে GPO এবং PowerShell ব্যবহার করে পুরানো ব্যবহারকারীর প্রোফাইল মুছে ফেলবেন?

আসুন ব্যবহারকারীদের তালিকা প্রদর্শন করি, যাদের প্রোফাইল 60 দিনের বেশি ব্যবহার করা হয়নি। সেগুলি খুঁজে পেতে, আপনি প্রোফাইলের LastUseTime ক্ষেত্রের মানটি ব্যবহার করতে পারেন৷

Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-60))}| Measure-Object

দেখা গেল যে আমার RDS হোস্টে আমার 127টি নিষ্ক্রিয় ব্যবহারকারী অ্যাকাউন্ট রয়েছে (প্রোফাইলের মোট আকার প্রায় 18 GB)।

কিভাবে GPO এবং PowerShell ব্যবহার করে পুরানো ব্যবহারকারীর প্রোফাইল মুছে ফেলবেন?

এই সমস্ত প্রোফাইলগুলি সরাতে, ব্যবহারকারীর তালিকাটিকে Remove-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 স্ক্রিপ্ট ব্যবহার করে এই PowerShell স্ক্রিপ্টটি চালাতে পারেন৷

প্রোফাইল স্বয়ংক্রিয়ভাবে মুছে ফেলার কনফিগার করার আগে, আপনার পরিবেশে স্ক্রিপ্টটি পরীক্ষা করার পরামর্শ দেওয়া হচ্ছে!

আপনি নির্দিষ্ট AD গ্রুপে যুক্ত সমস্ত ব্যবহারকারী প্রোফাইল স্বয়ংক্রিয়ভাবে সরাতে স্ক্রিপ্টটি পরিবর্তন করতে পারেন (উদাহরণস্বরূপ, DisabledUsers গ্রুপ):

$users = Get-ADGroupMember -Identity DisabledUsers | Foreach {$_.Sid.Value}
$profiles = Get-WmiObject Win32_UserProfile
$profiles | Where {$users -eq $_.Sid} | Foreach {$_.Delete()}


  1. কিভাবে PowerShell এ ফোল্ডার এবং সাবফোল্ডার মুছে ফেলতে হয়

  2. Windows.old ফোল্ডার কি এবং কিভাবে এটি মুছে ফেলতে হয়।

  3. কীভাবে PowerShell ব্যবহার করে ফাইল এবং ফোল্ডার মুছবেন

  4. কিভাবে উইন্ডোজ 10 পিসিতে পুরানো ফাইলগুলি সনাক্ত এবং মুছবেন?