رفتن به محتوا
مدیریت سرور

حذف یوزر و گروه در پاورشل (PowerShell)

در محیط‌های سازمانی، شبکه‌ های داخلی، و حتی سرورهای ابری، مدیریت کاربران (Users) و گروه‌ها (Groups) یکی از مهم‌ترین وظایف مدیران سیستم است. این مدیریت نه‌ تنها برای حفظ امنیت شبکه اهمیت دارد، بلکه در کنترل دسترسی‌ها، تنظیم مجوزها و ساختاردهی منابع نیز نقش کلیدی ایفا می‌کند. مایکروسافت…

12 دقیقه مطالعهبلاگ ابر آراد
مجله ابر آرادINSIGHTS / مدیریت سرور

در محیط‌های سازمانی، شبکه‌ های داخلی، و حتی سرورهای ابری، مدیریت کاربران (Users) و گروه‌ها (Groups) یکی از مهم‌ترین وظایف مدیران سیستم است. این مدیریت نه‌ تنها برای حفظ امنیت شبکه اهمیت دارد، بلکه در کنترل دسترسی‌ها، تنظیم مجوزها و ساختاردهی منابع نیز نقش کلیدی ایفا می‌کند.

مایکروسافت برای انجام این کارها ابزاری به‌نام PowerShell را ارائه داده است، یک محیط اسکریپت‌ نویسی پیشرفته که به مدیر سیستم اجازه می‌دهد تمام جنبه‌های ویندوز و Active Directory را تنها با چند خط دستور کنترل کند.

در این مقاله یاد می‌گیریم چگونه کاربران و گروه‌ها را با استفاده از PowerShell حذف کنیم، چه تفاوتی بین حذف از گروه و حذف حساب کاربری وجود دارد، و چگونه این عملیات را به صورت خودکار و امن انجام دهیم.

اهمیت مدیریت کاربران و گروه‌ها در ویندوز و اکتیو دایرکتوری

در اکوسیستم ویندوز، کاربران (Users) نماینده‌ی افراد یا سرویس‌هایی هستند که به سیستم دسترسی دارند، و گروه‌ها (Groups) مجموعه‌هایی از کاربران با مجوزهای مشترک‌اند.

وقتی تعداد کاربران زیاد می‌شود، مثلاً در یک شرکت، دانشگاه یا دیتاسنتر، مدیریت دستی آن‌ها از طریق کنترل پنل یا Active Directory Users & Computers بسیار زمان‌بر و خطاپذیر است. در چنین شرایطی، PowerShell با دستورات خودکار و دقیقش، به مدیران کمک می‌کند:

  • صدها کاربر را در چند ثانیه حذف یا ویرایش کنند.
  • دسترسی کاربران غیرفعال یا منقضی‌ شده را مدیریت کنند.
  • گروه‌های غیرضروری یا بلااستفاده را پاکسازی نمایند.
  • گزارش‌گیری خودکار از وضعیت عضویت‌ها داشته باشند.

بنابراین، یادگیری حذف و مدیریت کاربران از طریق پاورشل یک مهارت کلیدی در حوزه‌ی DevOps، IT Administration و Cloud Infrastructure محسوب می‌شود.

معرفی ماژول ActiveDirectory در PowerShell

قبل از اجرای دستورات مربوط به کاربران و گروه‌ها، باید مطمئن شوید ماژول Active Directory روی سیستم شما فعال است. این ماژول مجموعه‌ای از دستورهای مدیریتی مخصوص اکتیو دایرکتوری را فراهم می‌کند.

برای بررسی نصب ماژول از دستور زیر استفاده کنید:

Get-Module -ListAvailable | Where-Object { $_.Name -like “ActiveDirectory” }

اگر خروجی خالی بود، باید ماژول را نصب کنید:

Import-Module ActiveDirectory

یا در صورت نیاز به نصب از طریق Server Manager:

Add-WindowsFeature RSAT-AD-PowerShell

اکنون تمام دستوراتی که در ادامه می‌آیند در محیط PowerShell شما در دسترس خواهند بود.

حذف یک کاربر از تمام گروه‌ها در PowerShell

گاهی لازم است دسترسی یک کاربر را به تمام گروه‌های موجود لغو کنید، برای مثال زمانی که کارمند شرکت را ترک کرده یا حساب او باید از تمام مجوزهای گروهی پاک شود.

PowerShell برای این کار دستور بسیار قدرتمندی دارد:

$User = “E.Franklin”

 $UserDN = (Get-ADUser -Identity $User).DistinguishedName

 Get-ADUser -Identity $User -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Where-Object { $_ -notlike “*Domain Users*” } | ForEach-Object { Remove-ADGroupMember -Identity $_ -Members $UserDN -Confirm:$false }

توضیح دستور:

  • Get-ADUser کاربر مورد نظر را از Active Directory واکشی می‌کند.
  • -Properties MemberOf لیست گروه‌هایی که کاربر عضو آن‌هاست را بازیابی می‌کند.
  • ForEach-Object روی هر گروه تکرار می‌شود.
  • Remove-ADGroupMember کاربر را از آن گروه حذف می‌کند.
  • -Confirm:$false یعنی بدون نیاز به تأیید دستی هر مرحله، عملیات حذف انجام شود.

با اجرای این دستور، کاربر مشخص‌ شده از تمام گروه‌ها به‌ جز گروه پیش‌فرض Domain Users حذف می‌شود.

نکته: همیشه توصیه می‌شود قبل از اجرای این دستور در محیط واقعی، ابتدا یک گزارش آزمایشی از گروه‌های کاربر بگیرید:

(Get-ADUser -Identity E.Franklin -Properties MemberOf).MemberOf

حذف چند کاربر به‌ صورت همزمان از یک گروه

در شرایطی که بخواهید چند کاربر را از یک گروه خاص حذف کنید، استفاده از فایل CSV بهترین روش است.
فایل CSV به شما اجازه می‌دهد فهرست کاربران را به‌صورت جدولی در اختیار اسکریپت قرار دهید و به شکل خودکار حذف کنید.

گام اول: ساخت فایل CSV

در مسیر مثلاً C:\scripts\users.csv فایلی با محتوا‌ی زیر بسازید:

users

John.Doe

Mary.Ali

Frank.Karimi

گام دوم: اجرای دستور در PowerShell

Import-CSV “C:\scripts\users.csv” | ForEach-Object {

    Remove-ADGroupMember -Identity “Marketing” -Members $_.UserName -Confirm:$false

}

توضیح دستور:

  • Import-CSV فایل CSV را به PowerShell وارد می‌کند.
  • -Header users مشخص می‌کند ستون داده‌ ها نامش چیست.
  • Remove-ADGroupMember همان دستور حذف از گروه است.
  • “Marketing” نام گروه هدف است که می‌توانید با گروه دلخواه جایگزین کنید.

اگر بخواهید نتایج را ثبت کنید، می‌توانید خروجی را در فایل لاگ ذخیره نمایید:

… | Out-File “C:\Logs\RemovedUsers.txt”

حذف یک کاربر خاص از یک گروه مشخص

اگر هدف فقط حذف یک کاربر از یک گروه است، مثلاً کاربر J.Robinson از گروه Quality، دستور ساده‌تر خواهد بود:

Remove-ADGroupMember -Identity “Quality” -Members “J.Robinson”

در صورت تمایل برای حذف بدون پرسش تأیید، می‌توانید پارامتر زیر را اضافه کنید:

-Confirm:$false

این دستور یکی از پرکاربردترین دستورات PowerShell در شرکت‌ها و سازمان‌هاست، زیرا به مدیر سیستم اجازه می‌دهد به‌صورت متمرکز دسترسی کاربران را از گروه‌های حیاتی حذف کند.

حذف کامل یک گروه در PowerShell

گاهی لازم است گروه‌هایی که دیگر استفاده نمی‌شوند را از Active Directory حذف کنید. برای این کار از دستور Remove-ADGroup استفاده می‌شود:

Remove-ADGroup -Identity “Quality”

این دستور پس از اجرا، از شما تأییدیه می‌خواهد (Yes/No). برای حذف خودکار بدون تأیید می‌توانید پارامتر زیر را اضافه کنید:

Remove-ADGroup -Identity “Quality” -Confirm:$false

توصیه:
قبل از حذف یک گروه، با دستور زیر اعضای آن را بررسی کنید تا از حذف ناگهانی کاربران مهم جلوگیری شود:

Get-ADGroupMember -Identity “Quality”

ساخت اسکریپت ترکیبی برای پاکسازی کاربران و گروه‌ها

در محیط‌های بزرگ که ده‌ها گروه و صدها کاربر وجود دارد، می‌توانید از اسکریپت ترکیبی استفاده کنید تا همزمان کاربران غیرفعال و گروه‌های خالی حذف شوند.

نمونه اسکریپت:

# حذف کاربران غیرفعال

$inactive = Get-ADUser -Filter {Enabled -eq $false}

foreach ($user in $inactive) {

    Remove-ADUser -Identity $user.SamAccountName -Confirm:$false

}

# حذف گروه‌های بدون عضو

$groups = Get-ADGroup -Filter *

foreach ($group in $groups) {

    if ((Get-ADGroupMember $group -ErrorAction SilentlyContinue).Count -eq 0) {

        Remove-ADGroup -Identity $group -Confirm:$false

    }

}

این اسکریپت به‌ صورت خودکار کاربران غیرفعال و گروه‌های بدون عضو را شناسایی و حذف می‌کند.
چنین اسکریپت‌ هایی در سازمان‌های بزرگ یا دیتاسنترهای ابری (مثل AradCloud) برای بهینه‌ سازی ساختار دامین بسیار مفید هستند.

بررسی وابستگی‌ها قبل از حذف کاربر یا گروه

گاهی ممکن است کاربر یا گروه در Policy ها، مجوزهای فایل، یا تنظیمات دسترسی دیگر استفاده شده باشد. حذف بدون بررسی می‌تواند باعث خطا در سرویس‌ها شود.

برای اطمینان از وابستگی‌ها، از دستورات کمکی زیر استفاده کنید:

Get-ACL “C:\SharedFolder” | Select-String “Username”

یا بررسی عضویت گروه‌ها:

Get-ADUser -Identity “John.Doe” -Properties MemberOf

و اگر بخواهید لیست تمام گروه‌هایی که یک کاربر در آن عضو است را در فایل خروجی ذخیره کنید:

(Get-ADUser -Identity “John.Doe” -Properties MemberOf).MemberOf | Out-File “C:\Reports\UserGroups.txt”

از مطالعه تا انتخابسرویس مناسب پروژه‌تان را بررسی کنید.

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

بررسی محصولات

نکات مهم پیش از حذف کاربران

  • تهیه نسخه پشتیبان از AD:
    همیشه قبل از حذف گروه‌ها و کاربران از Active Directory نسخه پشتیبان بگیرید.
  • بررسی Recycle Bin:
    اگر Directory Recycle Bin فعال نیست، فعالسازی آن توصیه می‌شود تا در صورت اشتباه بتوانید حساب‌ها را بازیابی کنید.
  • Enable-ADOptionalFeature -Identity ‘Recycle Bin Feature’ -Scope ForestOrConfigurationSet -Target ‘domain.local’
  • بررسی وابستگی سرویس‌ها:
    مطمئن شوید کاربر یا گروه در حال استفاده توسط سرویس خاصی نیست (مثلاً سرویس SQL یا IIS).
  • استفاده از تست Dry-Run:
    پیش از اجرای نهایی حذف، از -WhatIf استفاده کنید تا نتیجه را شبیه‌سازی کند:
    Remove-ADGroupMember -Identity “Quality” -Members “J.Robinson” -WhatIf

در این بخش از آموزش، با مفاهیم اصلی مدیریت کاربران و گروه‌ها در PowerShell آشنا شدیم.
یاد گرفتیم چگونه:

  • ماژول ActiveDirectory را بارگذاری کنیم.
  • یک کاربر را از تمام گروه‌ها حذف کنیم.
  • چندین کاربر را با فایل CSV از گروه‌ها خارج کنیم.
  • گروه‌های غیرضروری را پاک نماییم.
  • و اسکریپت‌ هایی برای پاکسازی خودکار کاربران و گروه‌ها بنویسیم.

بازگردانی کاربران حذف‌ شده با Recycle Bin در Active Directory

یکی از بزرگ‌ترین مزیت‌های ویندوز سرورهای مدرن، پشتیبانی از قابلیت Active Directory Recycle Bin است. این ویژگی به شما اجازه می‌دهد کاربران، گروه‌ها یا اشیایی که به‌ صورت تصادفی حذف شده‌اند را بازیابی کنید، دقیقاً مانند Recycle Bin در دسکتاپ ویندوز.

اگر هنوز این قابلیت فعال نشده است، می‌توانید آن را با دستور زیر روشن کنید:

Enable-ADOptionalFeature `

    -Identity “Recycle Bin Feature” `

    -Scope ForestOrConfigurationSet `

    -Target “aradcloud.local”

پس از فعالسازی، هر زمان که کاربری به اشتباه حذف شد، می‌توانید با دستور زیر آن را برگردانید:

Get-ADObject -Filter ‘isDeleted -eq $true -and Name -like “*John*”‘ -IncludeDeletedObjects |

Restore-ADObject

این دستور تمام حساب‌های حذف‌ شده با نام مشابه “John” را جستجو و بازیابی می‌کند.

در محیط‌های سازمانی که چندین مدیر شبکه فعال هستند، فعال بودن Recycle Bin نه‌تنها امنیت داده‌ ها را تضمین می‌کند بلکه از وقوع اختلال در دسترسی‌ها جلوگیری می‌نماید.

تفاوت بین حذف حساب کاربری و حذف از گروه

درک تفاوت میان Remove-ADUser و Remove-ADGroupMember بسیار حیاتی است:

نوع عملیاتدستورکاربردنتیجه نهایی
حذف کامل حساب کاربریRemove-ADUserحذف حساب از دامینکاربر به‌طور کامل از سیستم پاک می‌شود
حذف از گروهRemove-ADGroupMemberلغو عضویت از یک گروه خاصحساب هنوز وجود دارد ولی مجوزهای گروهی را از دست می‌دهد

بنابراین، زمانی که هدف شما فقط لغو دسترسی خاصی است، از دستور دوم استفاده کنید.
اما اگر قصد دارید حساب را بطور کامل حذف کنید (مثلاً کارمند شرکت را ترک کرده)، از دستور اول کمک بگیرید:

Remove-ADUser -Identity “E.Franklin” -Confirm:$false

نکته امنیتی: همیشه قبل از حذف کامل، گزارش عضویت و مسیرهای دسترسی کاربر را بررسی کنید. حذف اشتباه یک حساب می‌تواند باعث توقف سرویس‌هایی شود که از آن به‌عنوان سرویس‌ اکانت استفاده می‌کنند.

رفع خطاهای متداول در حذف کاربران و گروه‌ها

در هنگام حذف یوزر یا گروه، ممکن است خطاهایی در PowerShell نمایش داده شوند.
در جدول زیر، خطاهای رایج و روش‌های رفع آن‌ها آورده شده است:

نوع خطاعلت احتمالیراه‌حل
Access Deniedاجرای PowerShell بدون دسترسی ادمیناجرای PowerShell با Run as Administrator
The term ‘Remove-ADUser’ is not recognizedماژول Active Directory نصب نیستاجرای Import-Module ActiveDirectory یا نصب RSAT
Object not foundکاربر یا گروه وجود ندارد یا حذف شدهبررسی نام دقیق با Get-ADUser یا Get-ADGroup
The specified account is a member of Domain Adminsحساب از نوع سیستمی یا حیاتی استابتدا از گروه Admin جدا کنید سپس حذف نمایید
Cannot delete object because it is a parent of other objectsکاربر دارای Sub Object (مثل mailbox) استابتدا وابستگی‌ها را حذف یا منتقل کنید

در محیط‌های بزرگ (مثل زیرساخت ابری ابرآراد)، توصیه می‌شود عملیات حذف در یک محیط تستی (Staging) انجام شود تا خطاها پیش از اجرا در محیط واقعی شناسایی شوند.

نکات امنیتی در حذف کاربران و گروه‌ها

PowerShell ابزاری بسیار قدرتمند است، و در عین حال اگر بدون سیاست‌های امنیتی استفاده شود، می‌تواند خطرناک باشد.
برای حذف ایمن کاربران و گروه‌ها، موارد زیر را رعایت کنید:

1- محدودسازی دسترسی PowerShell
تنها مدیران با سطح دسترسی Domain Admin مجاز به اجرای اسکریپت‌ های حذف باشند.

2- ثبت تمامی تغییرات در لاگ اختصاصی
Start-Transcript -Path “C:\Logs\AD-Changes.log”

3- ایجاد Snapshot از AD قبل از حذف انبوه کاربران
اگر از سرور مجازی استفاده می‌کنید، با ابزار Hyper-V یا VMware Snapshot بگیرید.

4- تأیید دوباره در حذف‌های دسته‌ای
همیشه از پارامتر -WhatIf برای تست دستور قبل از اجرای واقعی استفاده کنید:
Remove-ADUser -Identity “testuser” -WhatIf

5- تغییر رمز حساب‌های سیستمی به جای حذف
اگر حساب متعلق به سرویس‌هاست، به‌جای حذف، آن را Disable کنید:
Disable-ADAccount -Identity “sqlservice”

این نکات در سازمان‌هایی با چندین مدیر شبکه یا DevOps بسیار حیاتی هستند و از ایجاد خلل در سرویس‌های تولیدی جلوگیری می‌کنند.

اسکریپت خودکار برای پاکسازی گروه‌ها و کاربران غیرفعال

برای نگهداری منظم Active Directory، می‌توانید فرآیند حذف را به‌صورت خودکار برنامه‌ریزی کنید.

نمونه اسکریپت زیر کاربران غیرفعال بیش از ۹۰ روز را شناسایی و حذف می‌کند:

$DateLimit = (Get-Date).AddDays(-90)

$InactiveUsers = Get-ADUser -Filter {LastLogonDate -lt $DateLimit -and Enabled -eq $false}

foreach ($User in $InactiveUsers) {

    Remove-ADUser -Identity $User.SamAccountName -Confirm:$false

}

همچنین گروه‌هایی که بیش از ۶ ماه بدون عضو مانده‌اند را می‌توان به‌طور خودکار حذف کرد:

$Groups = Get-ADGroup -Filter *

foreach ($G in $Groups) {

    if ((Get-ADGroupMember $G -ErrorAction SilentlyContinue).Count -eq 0) {

        Remove-ADGroup -Identity $G -Confirm:$false

    }

}

برای اجرای زمان‌بندی‌ شده، کافی است اسکریپت را در Task Scheduler با تریگر هفتگی قرار دهید تا به‌صورت خودکار پاکسازی انجام شود.

گزارشگیری از عملیات حذف برای ممیزی (Audit)

در هر سازمان حرفه‌ای، ردیابی عملیات مدیریتی اهمیت بالایی دارد.
PowerShell این امکان را می‌دهد که تمام حذف‌ها را در قالب فایل CSV یا TXT ذخیره کنید:

$Log = @()

$Users = Get-ADUser -Filter * -SearchBase “OU=Temp,DC=aradcloud,DC=local”

foreach ($U in $Users) {

    $Log += [PSCustomObject]@{User=$U.SamAccountName; Action=”Deleted”; Date=(Get-Date)}

    Remove-ADUser -Identity $U.SamAccountName -Confirm:$false

}

$Log | Export-Csv “C:\Logs\UserDeletion.csv” -NoTypeInformation

به این ترتیب می‌توانید هر زمان بخواهید، گزارشی دقیق از کاربران حذف‌ شده، تاریخ، و مدیر اجرا کننده داشته باشید.
این روش در انطباق با استانداردهای امنیت اطلاعات (ISO 27001) و ممیزی داخلی (Internal Audit) کاربردی است.

نکات عملی برای زیرساخت‌ های ابری (Cloud AD)

در زیرساخت‌ های ابری مانند Azure AD یا AradCloud Directory Service، رفتار PowerShell مشابه ولی با تفاوت‌های کوچک است.
در این محیط‌ها، باید از AzureAD Module استفاده کنید:

Install-Module AzureAD

Connect-AzureAD

Remove-AzureADUser -ObjectId user@aradcloud.ir

در Azure AD، حذف کاربر به معنی انتقال او به Soft Delete Pool است که تا ۳۰ روز قابل بازیابی می‌باشد.
بنابراین قبل از حذف دائمی از Azure Portal یا دستور زیر استفاده کنید:

Remove-AzureADUser -ObjectId user@aradcloud.ir -RemoveFromRecycleBin

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

جمع‌بندی

در این مقاله یاد گرفتید چگونه با استفاده از PowerShell به‌صورت حرفه‌ای و ایمن، عملیات حذف کاربران و گروه‌ها را انجام دهید.
از حذف ساده‌ی اعضای یک گروه تا پاکسازی خودکار کاربران غیرفعال و گروه‌های بدون عضو، تمام مراحل با اسکریپت‌ ها و دستورات عملی پوشش داده شد. علاوه‌بر آن، اهمیت امنیت، ثبت لاگ، و قابلیت بازیابی کاربران حذف‌شده بررسی شد.

به‌کارگیری این روش‌ها نه‌ تنها کار مدیران سیستم را ساده‌تر می‌کند، بلکه انسجام ساختار Active Directory را حفظ و از بروز خطاهای انسانی جلوگیری می‌نماید.

سوالات متداول

1- چگونه می‌توانم حذف کاربران را شبیه‌ سازی کنم بدون اینکه واقعاً حذف شوند؟

با استفاده از پارامتر -WhatIf، PowerShell فقط شبیه‌ سازی انجام می‌دهد و هیچ کاربری حذف نمی‌شود.

2- آیا حذف گروه باعث حذف اعضای آن هم می‌شود؟

خیر، کاربران فقط از گروه جدا می‌شوند و حسابشان حذف نمی‌گردد.

3- آیا می‌توان حذف کاربران را زمان‌بندی کرد؟

بله، با Task Scheduler یا Azure Automation می‌توانید اسکریپت‌ ها را در بازه‌های زمانی دلخواه اجرا کنید.

4- آیا حذف یوزر در پاورشل نیاز به ادمین دارد؟

بله، حداقل سطح دسترسی Domain Admin یا Account Operator لازم است.

5- چگونه می‌توان کاربر حذف‌ شده را بازگرداند؟

با استفاده از دستور Restore-ADObject در صورتی که Recycle Bin فعال باشد.

قدم بعدی شمابرای انتخاب سرویس، درباره نیاز پروژه صحبت کنیم.

از صفحه تماس ابر آراد، مسیر ارتباط با تیم را انتخاب کنید.

گفت‌وگو با تیم آراد
به انتهای این مقاله رسیدید. مسیر یادگیری را با مقاله‌های دیگر ادامه دهید.
گفت‌وگو درباره این مقاله

دیدگاه‌ها و پرسش‌های شما

تجربه یا پرسش خود را درباره موضوع مقاله با ما در میان بگذارید.

هنوز دیدگاهی ثبت نشده است؛ شما گفت‌وگو را شروع کنید.

دیدگاه خود را بنویسید

نشانی ایمیل شما نمایش داده نمی‌شود. فیلدهای ستاره‌دار الزامی هستند.