حذف ملفات المستخدم باستخدام PowerShell & CIM

A common pain point in an IT administrator’s career is user profiles. User profiles are a ubiquitous part of a Windows IT pro’s life; especially those that manage virtual desktop environments like Remote Desktop Services (RDS) or Citrix. In this post, I’m going to demonstrate a way you take out your aggression by using PowerShell to delete user profiles (and discover them).

يضطر مسؤولو نظام Windows إلى التعامل مع:

  • سجلات التسجيل المستخدم التالفة
  • الملفات التي تحتاج إلى المشاركة عبر جميع ملفات تعريف المستخدم
  • معرفة كيفية إعادة إنشاء الملفات التعريف المعطوبة
  • … وأكثر من ذلك

ما كان في السابق تجربة محبطة أصبحت أقل قليلاً من المحبطة باستخدام PowerShell . إليك بعض الطرق التي يمكن أن يجعل بها PowerShell إدارة ملفات تعريف المستخدمين في Windows أسهل.

إدارة وتقديم تقارير حول Active Directory و Exchange و Microsoft 365 باستخدام ManageEngine ADManager Plus. قم بتنزيل النسخة التجريبية المجانية!

عدادات ملفات تعريف المستخدم

من السهل أن تلقي نظرة على ملفات تعريف المستخدمين على نظام الملفات على جهاز كمبيوتر واحد يعمل بنظام Windows. يكفي أن تنظر في المجلد C: \ Users . ولكن ليس فقط أنك لا تحصل على الصورة الكاملة عند القيام بذلك ، بل أنها مشكلة أيضًا بسبب مشاكل الوصول إلى نظام الملفات المحتملة. هناك طريقة أفضل وهي من خلال WMI أو CIM. في CIM ، يوجد فئة تسمى Win32_UserProfile . تحتوي هذه الفئة على جميع الملفات التعريفية التي توجد على الجهاز والكثير من المعلومات المفيدة الأخرى التي لن يخبرك بها مجرد مجلد في نظام الملفات.

باستخدام PowerShell ، يمكنك الوصول إلى هذه الفئة CIM باستخدام الأمر Get-CimInstance .

أدناه، أنا أبحث عن ملف المستخدم الأول على الكمبيوتر المحلي. ستلاحظ العديد من المعلومات المفيدة مثل LastUseTime، SID وما إلى ذلك.

PS C:\> Get-CimInstance -ClassName win32_userprofile | Select-Object -First 1


AppDataRoaming                   : Win32_FolderRedirectionHealth
Contacts                         : Win32_FolderRedirectionHealth
Desktop                          : Win32_FolderRedirectionHealth
Documents                        : Win32_FolderRedirectionHealth
Downloads                        : Win32_FolderRedirectionHealth
Favorites                        : Win32_FolderRedirectionHealth
HealthStatus                     : 3
LastAttemptedProfileDownloadTime :
LastAttemptedProfileUploadTime   :
LastBackgroundRegistryUploadTime :
LastDownloadTime                 :
LastUploadTime                   :
LastUseTime                      : 3/14/2019 3:06:39 PM
Links                            : Win32_FolderRedirectionHealth
Loaded                           : False
LocalPath                        : C:\Users\.NET v4.5 Classic
Music                            : Win32_FolderRedirectionHealth
Pictures                         : Win32_FolderRedirectionHealth
RefCount                         :
RoamingConfigured                : False
RoamingPath                      :
RoamingPreference                :
SavedGames                       : Win32_FolderRedirectionHealth
Searches                         : Win32_FolderRedirectionHealth
SID                              : S-1-5-82-3876422241-1344743610-1729199087-774402673-2621913236
Special                          : False
StartMenu                        : Win32_FolderRedirectionHealth
Status                           : 0
Videos                           : Win32_FolderRedirectionHealth
PSComputerName                   :

أمر Get-CimInstance لا يعمل فقط محليًا ولكن عن بُعد أيضًا. باستخدام معامل ComputerName، يمكنك تحديد 1، 10 أو 100 أجهزة كمبيوتر عن بُعد وسيستعلم عن كل واحدة بسعادة.

PS C:\> Get-CimInstance -ClassName Win32_UserProfile -ComputerName localhost,WINSRV

حذف ملفات المستخدم

بمجرد فهمك لكيفية فرز ملفات المستخدم على الكمبيوترات، يمكنك الانتقال خطوة إضافية وحذف تلك الملفات أيضًا.

I can’t count how many times I’ve had to delete user profiles because something got corrupted and I just needed the user to log in again and recreate it. At one time, I would simply have the user log off and remove the C:\Users<UserName> folder from the file system. Usually it works, sometimes it didn’t. What I didn’t realize was that I was actually leaving some remnants behind.

الطريقة الصحيحة للقيام بذلك هي ببدء الإزالة عبر CIM.

باستخدام نفس صنف CIM الذي تمت مراجعته للتو، يمكنك ليس فقط عرض الملفات الشخصية ولكن يمكنك أيضًا إزالتها تمامًا. هذا هو نفسه كما لو كنت تذهب إلى صندوق ملفات المستخدم تحت إعدادات النظام وتضغط Delete.

User Profiles

للقيام بذلك، قم بتعداد ملفات المستخدم مرة أخرى وهذه المرة قم بتطبيق عامل تصفية لاختيار ملف مستخدم واحد للإزالة. في هذه الحالة، قم بإزالة ملف المستخدم المسمى UserA. يمكنك القيام بذلك باستخدام cmdlet Where-Object في PowerShell وبعض عمليات التلاعب بالسلاسل لاستخراج اسم المجلد الخاص بالمستخدم من خاصية LocalPath كما هو موضح أدناه.

مرة واحدة تستطيع تحديد هذا الملف الشخصي الواحد يمكنك تمرير تلك النسخة CIM إلى cmdlet Remove-CimInstance لكل كائن يعيد Get-CimInstance. سيقوم هذا العملية بإزالة ملف الشخصي للمستخدم من نظام الملفات والسجل.

Get-CimInstance -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

مرة أخرى، إذا كنت ترغب في توسيع هذا إلى عدة أجهزة كمبيوتر ببساطة يمكنك استخدام معلمة ComputerName على Get-CimInstance.

Get-CimInstance -ComputerName SRV1,SRV2,SRV3 -Class Win32_UserProfile | Where-Object { $_.LocalPath.split('\')[-1] -eq 'UserA' } | Remove-CimInstance

إدارة وتقرير الدليل النشط، وتبادل وMicrosoft 365 مع إدارة ManageEngine ADManager Plus. قم بتنزيل النسخة التجريبية مجاناً!

الملخص

لقد رأيت الآن طريقة سهلة لتعداد وحذف ملفات تعريف المستخدمين في Windows. إذا لم تكن على علم بفئة CIM Win32_UserProfile قد تكون قد ربطت مجلد C:\Users<اسم المستخدم> كالملف الشخصي ولكن يجب أن تعرف كيفية حذف تلك النسخة CIM الآن.

يمكنك أن ترى أن هناك الكثير أكثر من الملف الشخصي للمستخدم من مجرد مجلد في نظام الملفات. استخدم CIM في المرة القادمة التي تحتاج فيها إلى استعلام أو حذف ملفات تعريف المستخدمين من أجهزة الكمبيوتر التي تعمل بنظام Windows في بيئتك.

Source:
https://adamtheautomator.com/powershell-delete-user-profile/