خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


نحوه حذف پروفایل های قدیمی کاربران از طریق گروپ پالیسی و دستورات پاورشل

نحوه حذف پروفایل های قدیمی کاربران از طریق گروپ پالیسی و دستورات پاورشل
در کلاینت ها و سرورها به خصوص سرور RDS یا Remote Desktop Services، مرتباً نیاز به حذف پروفایل های قدیمی کاربر (استفاده نشده) از مسیر C:\Users است. مشکل اصلی هر Remote Desktop server رشد مداوم دایرکتوری پروفایل های کاربران است. این مشکل تا حدی با فعال کردن quota یا سهمیه حل می شود. ولی با این حال، اگر تعداد زیادی از کاربران در RDS وجود داشته باشند، برخی از آنها از سازمان جدا می شوند و کاربران جدید جایگزین آنها می شود و به همین ترتیب پروفایل های جدید رد این سروها ایجاد می شود و پروفایل های قدیمی هنوز سرجای خود هستند. از این باید پروفایل های قدیمی را برای خلوت تر کردن فولدر Users و همچنین آزاد کردن فضا در درایو C حذف کنید.

نرم افزار سامانه مودیان راهکار



How to Delete a User Profile Manually in Windows?

بسیاری از ادمین های تازه کار اقدام به حذف دستی پروفایل های کاربرن از مسیر C:\Users می کنند. می توانید اینکار را انجام دهید. پس از حذف به رجيستري ويندوز وارد شوید.

براي مشاهده نحوه وارد شدن به رجيستري ويندوز مي توانيد به لينک زير وارد شويد:
وارد شدن به رجيستري ويندوز

پيشنهاد مي کنيم قبل از هر گونه تغيير در رجيستري ويندوز، حتما از آن بک آپ بگيريد:
تهيه Backup از Windows Registry

سپس مسیر زیر را در رجیستری دنبال کنید و فولدر مربتط با پروفایل را از این مسیر حذف کنید.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ProfileList

ولی صحیح حذف دستی پروفایل کاربران در ویندوز، وارد شدن به پنجره System Properties است. کافیست Run را باز کرده و دستور sysdm.cpl را وارد کنید. سپس به تب Advanced رفته و از قسمت User Profiles دکمه Settings را کلیک کنید.
سپس از لیست موجود در فرم باز شده، کاربر مورد نظرتان را انتخاب کرده(در مقابل هر پروفایل حجم اشغال شده توسط آن پروفایل نمایش داده می شود) و سپس دکمه Delete را کلیک کنید.

نحوه حذف پروفایل های قدیمی کاربران ازط ریق گروپ پالیسی و دستورات پاورشل . آموزشگاه رایگان خوش آموز

اما روش فوق روش دستی است و شاید شما بخواهید این فرآیند را اتوماتیک کنید.

GPO: Delete User Profiles Older Than a Specified Number Days

در ویندوز ، یک پالیسی برای حذف خودکار پروفایل های کاربران قدیمی تر از xx روز وجود دارد. پس به گروپ پالیسی ویندوز وارد شوید و سپس مسیر زیر را دنبال کنید:

Computer Configuration -> Administrative Templates -> System -> User Profiles

در این مسیر پالیسی Delete user profiles older than a specified number days on system restart را پیدا خواهید کرد. روی این پالیسی دابل کلیک کنید تا فرم تغییر تنظیمات این پالیسی باز شود. پس از باز شدن فرم، گزینه Enabled را انتخاب کرده و سپس تعداد روزهایی که کاربر از نظر شما فعال تلقی می شود را تعیین کنید. با پایان این دوره Windows user profile در ریستارت بعدی به طور خودکار پروفایل کاربر را حذف می کند. توصیه می شود دوره 45-90 روز را در اینجا مشخص کنید.

نحوه حذف پروفایل های قدیمی کاربران ازط ریق گروپ پالیسی و دستورات پاورشل . آموزشگاه رایگان خوش آموز

سپس فرم را OK کنید. با عمال این پالیسی مطمئن شوید که تنظیمات تاریخ و زمان در سیستم تان به درستی فعال شده باشد.
مشکلات اصلی مرتبط با این روش خودکار حذف پروفایل ها این است که در ریستارت ویندوز و عدم انتخاب سرور است (نمی توانید حذف برخی از پروفای های های کاربر مانند حساب های لوکال، اکانتهای ادمین و غیره را منع کنید). همچنین، اگر برخی از نرم افزارهای Third-party (غالباً آنتی ویروس است) به فایل NTUSER.DAT در پروفایل های کاربر دسترسی پیدا کرده و تاریخ آخرین استفاده را بروز کند، ممکن است این پالیسی موثر واقع نشود و کار نکند.

PowerShell Script to Delete Old User Profiles in Windows

به جای روش فوق از اسکریپت پاورشل زیر برای یافتن کاربران غیرفعال می توانید استفاده کنید. اول از همه اندازه تمام فولدر های پروفایل کاربر در C:\Users را با استفاده از یک اسکریپت ساده بیرون بکشیم:

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 گیگابایت است.

نحوه حذف پروفایل های قدیمی کاربران ازط ریق گروپ پالیسی و دستورات پاورشل . آموزشگاه رایگان خوش آموز

بیایید لیستی از کاربرانی که بیش از 60 روز از پروفایل آنها استفاده نشده است را نمایش دهیم.

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

همانطور که در خروجی دستور مشخص است، 127 کاربر inactive در سرور RDS داریم(سایز کلی پروفایل ها حدود 18 گیگابایت است).

نحوه حذف پروفایل های قدیمی کاربران ازط ریق گروپ پالیسی و دستورات پاورشل . آموزشگاه رایگان خوش آموز

برای حذف همه این پروفایل ها ، کافی است لیست کاربران را به دستور Remove-WmiObject هدایت یا Redirect کنید. ولی قبل از اجرای دستور توصیه می شود که از دستور WhatIf در انتهاب دستور استفاده کنید تا پیش از اینکه واقعا دستور در سیستم اعمال شود، از خروجی دستور اطلاع یابید.

Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and (!$_.Loaded) -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddDays(-30))} | Remove-WmiObject -WhatIf

سپس -whatif را از انتهاب دستور حذف کنید تا دستور اجرا شده و پروفایل های مربوطه از سیستم حذف شوند.
برای اینکه پروفایل برخی از کاربران مانند حساب های System and Network Service ، حساب administrator لوکال، حساب های کاربران فعالی که Session برقرار کرده اند حساب حذف نشود، می توانید اسکریپت را به صورت زیر ویرایش کنید:


#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
}
}

می توانید اسکریپت را تغییر دهید تا به طور خودکار تمام پروفایل های کاربران اضافه شده به گروه AD خاص (به عنوان مثال، گروه DisabledUsers) حذف شود:

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

شما می توانید گروه مورد نظر خود را جایگزین گروه مشخص شده کنید.

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز