در دنیای امروز که شبکه های سازمانی و سیستمهای چندکاربره بخش مهمی از زیرساخت فناوری اطلاعات را تشکیل میدهند، مدیریت کاربران (Users) و گروه ها (Groups) اهمیت فراوانی دارد. در ویندوز، هر کاربر دارای حسابی مشخص با دسترسیهای متفاوت است و این حسابها معمولاً در قالب گروه ها سازماندهی میشوند.
ابزار قدرتمند PowerShell که توسط مایکروسافت توسعه یافته، به مدیران شبکه و کاربران حرفهای این امکان را میدهد که مدیریت این حسابها را نه بهصورت دستی، بلکه بهصورت خودکار، سریع و ایمن انجام دهند.
یکی از ابتداییترین و درعینحال پراستفادهترین کاربردهای PowerShell، مشاهدهی لیست کاربران و گروهها در سیستم است. در این مقاله از مجموعهی آموزشهای ویندوز و سیستم عامل بلاگ ابرآراد، یاد میگیریم چگونه با چند دستور ساده، تمام حسابهای کاربری و گروههای موجود در سیستم خود را مشاهده کنیم، از فیلترهای مختلف برای جستجو استفاده کنیم و حتی نتایج را در قالب گزارش خروجی بگیریم.
اهمیت مشاهده و مدیریت کاربران در PowerShell
هر سیستم عامل ویندوز، به ویژه در محیطهای سازمانی و سرور، دارای مجموعهای از حساب های کاربری محلی (Local) و دامنه ای (Domain) است. این حسابها میتوانند کاربران انسانی یا سرویسهای سیستمی باشند.
در طول زمان، افزودن یا حذف کاربران متعدد ممکن است باعث ایجاد ابهام یا حتی خطرات امنیتی شود، به ویژه اگر برخی حساب ها بلااستفاده بمانند. در چنین شرایطی، آگاهی از وضعیت کاربران و گروه ها ضروری است.
PowerShell با ارائهی دستوراتی مانند Get-LocalUser و Get-LocalGroup، ابزار دقیقی برای مشاهده، فیلتر، و بررسی کاربران و گروه ها در اختیار شما قرار میدهد. این روش به ویژه برای مدیرانی که میخواهند دهها سیستم را همزمان مدیریت کنند، بسیار کارآمد است.
پاورشل خروجی آبجکت محور (Object-based) میدهد که برای گزارشگیری عالی است، در حالی که net user فقط متن ساده است.
معرفی دستور Get-LocalUser، مشاهده کاربران محلی در ویندوز

دستور Get-LocalUser یکی از مهمترین دستورات پایهای PowerShell برای مشاهدهی کاربران محلی است.
این دستور اطلاعات کاملی از کاربران فعلی سیستم مانند نام، وضعیت فعال/غیرفعال، تاریخ ساخت، و توضیحات حساب ارائه میدهد.
برای اجرای اکثر این دستورات و جلوگیری از خطای Access Denied، حتماً پاورشل را بهصورت Run as Administrator باز کنید
برای مشاهدهی همهی کاربران محلی، کافی است دستور زیر را اجرا کنید:
Get-LocalUser
خروجی این دستور شامل فهرستی از تمام حساب های کاربری محلی در سیستم شماست. هر ردیف شامل اطلاعاتی مانند:
- Name (نام کاربر)
- Enabled (فعال یا غیرفعال بودن حساب)
- Description (توضیحات یا نقش حساب)
- LastLogon (آخرین ورود کاربر به سیستم)
نکته: اگر میخواهید فقط نام کاربران فعال را ببینید، از فیلتر زیر استفاده کنید:
Get-LocalUser | Where-Object {$_.Enabled -eq $true}
این فیلتر فقط کاربرانی را نمایش میدهد که حسابشان فعال است، روشی مفید برای مدیران امنیتی جهت شناسایی کاربران بلااستفاده یا غیرفعال.
مشاهده جزئیات یک کاربر خاص با Get-LocalUser
اگر بخواهید اطلاعات دقیق یک کاربر خاص را مشاهده کنید (برای مثال کاربر ali)، میتوانید از پارامتر -Name استفاده کنید:
Get-LocalUser -Name “ali”
این دستور اطلاعاتی مانند وضعیت فعال بودن، تاریخ ساخت حساب و توضیحات مرتبط با آن کاربر را نمایش میدهد.
در محیطهای بزرگ، مشاهده جزئیات کاربران خاص (مثلاً حساب های سرویس) به مدیر کمک میکند تا از نحوهی پیکربندی سیستم اطمینان حاصل کند.
برای مشاهدهی فقط فیلدهای خاص از خروجی، میتوانید از Select-Object استفاده کنید:
Get-LocalUser -Name “ali” | Select-Object Name, Enabled, LastLogon
مشاهده اعضای یک گروه با دستور Get-LocalGroupMember
در ویندوز، هر گروه (مثل Administrators، Users یا Remote Desktop Users) شامل مجموعهای از حساب های کاربری با دسترسیهای مشخص است.
برای مشاهدهی اعضای یک گروه خاص از دستور زیر استفاده میشود:
Get-LocalGroupMember -Name “Users”
خروجی این دستور فهرستی از تمام اعضای گروه “Users” را نمایش میدهد.
هر عضو ممکن است یکی از موارد زیر باشد:
- حساب محلی (Local Account)
- حساب دامنه ای (Domain Account)
- حساب سیستمی (System Account)
بهعنوان مثال اگر بخواهید بدانید چه کسانی دسترسی مدیریتی دارند، میتوانید از دستور زیر استفاده کنید:
Get-LocalGroupMember -Name “Administrators”
نتیجه شامل تمام حسابهایی است که مجاز به اعمال تغییرات سیستمی هستند، از جمله حساب Administrator و سایر کاربران با دسترسی ادمین.
مشاهده فهرست کامل گروه های محلی با Get-LocalGroup
اگر بخواهید تمام گروه های تعریف شده در سیستم را مشاهده کنید (مثل Users، Guests، Backup Operators و غیره)، کافی است دستور زیر را در PowerShell وارد نمایید:
Get-LocalGroup
این دستور لیست کامل گروهها را همراه با توضیح و زمان ایجاد آنها نمایش میدهد.
در سازمانهای بزرگ، مشاهدهی لیست گروه ها برای بررسی دسترسیها و مدیریت نقش ها بسیار حیاتی است.
میتوانید خروجی را بهصورت جدولی زیبا قالببندی کنید:
Get-LocalGroup | Format-Table Name, Description, PrincipalSource
توضیح پارامترها:
- Name: نام گروه
- Description: هدف یا توضیح گروه
- PrincipalSource: منبع گروه (محلی یا دامنه ای)
مشاهده یک گروه خاص و اعضای آن

برای مشاهدهی فقط یک گروه مشخص (مثلاً گروه HelpDesk) از دستور زیر استفاده میکنیم:
Get-LocalGroup -Name “HelpDesk”
و برای مشاهدهی اعضای همان گروه:
Get-LocalGroupMember -Name “HelpDesk”
در محیط های چندکاربره، این ترکیب دو دستور به مدیران کمک میکند تا بهسرعت تشخیص دهند چه حساب هایی به گروه های خاص اضافه شدهاند، مثلاً در تیم پشتیبانی، فنی یا مدیریت شبکه.
فیلتر کردن خروجی و ایجاد گزارش از کاربران و گروه ها
یکی از مزایای بزرگ PowerShell نسبت به ابزارهای گرافیکی، امکان ساخت گزارش های سفارشی است.
برای مثال، فرض کنید میخواهید فهرست تمام کاربران فعال سیستم را در قالب فایل CSV ذخیره کنید:
Get-LocalUser | Where-Object {$_.Enabled -eq $true} | Export-Csv “C:\Reports\ActiveUsers.csv” -NoTypeInformation
یا فهرست اعضای گروه Administrators را به صورت فایل متنی دریافت کنید:
Get-LocalGroupMember -Name “Administrators” | Out-File “C:\Reports\AdminGroup.txt”
این گزارش ها در سازمان ها برای ممیزی (Audit) و بررسیهای امنیتی بسیار ارزشمند هستند و میتوانند بهصورت خودکار با Task Scheduler اجرا شوند تا همیشه بهروز بمانند.
استفاده از فیلترها و پارامترهای پیشرفته برای جستجوی سریعتر
PowerShell بهصورت ذاتی از فیلترهای قدرتمند پشتیبانی میکند. برای نمونه:
- مشاهدهی کاربران ساخته شده بعد از تاریخ خاص:
Get-LocalUser | Where-Object {$_.LastLogon -gt (Get-Date).AddDays(-30)}
- جستجوی گروه هایی که در نامشان عبارت خاصی وجود دارد:
Get-LocalGroup | Where-Object {$_.Name -like “*Admin*”}
- شمارش تعداد کاربران فعال:
(Get-LocalUser | Where-Object {$_.Enabled -eq $true}).Count
این فیلترها در محیطهای بزرگ کمک میکنند بدون نیاز به خروجی کامل، به سرعت داده ی مورد نظر را پیدا کنید.
مزایای استفاده از PowerShell برای مشاهده کاربران و گروه ها
در مقایسه با روشهای سنتی مثل Control Panel یا Computer Management، پاورشل مزایای متعددی دارد:
1- سرعت و خودکارسازی: اجرای دهها بررسی تنها با چند خط دستور
2- امکان اسکریپت نویسی و زمانبندی: ساخت گزارشهای دورهای
3- امنیت بالا: قابلیت مشاهده بدون نیاز به رابط گرافیکی یا Remote Desktop
4- سازگاری با سرورها و ماشین های مجازی: بهویژه برای ادمینهای AradCloud
5- انعطاف در خروجیها: امکان ذخیره، فیلتر، و تجزیه داده ها با فرمتهای مختلف (CSV, TXT, JSON)
در این بخش از آموزش، یاد گرفتیم چگونه کاربران و گروهها را در محیط PowerShell مشاهده کنیم.
دستورات زیر بهعنوان پایهایترین ابزارها معرفی شدند:
- مشاهدهی کاربران محلی: Get-LocalUser
- مشاهدهی یک کاربر خاص: Get-LocalUser -Name “UserName”
- مشاهدهی گروه ها: Get-LocalGroup
- مشاهدهی اعضای یک گروه: Get-LocalGroupMember -Name “GroupName”
مشاهده کاربران از راه دور، خطاها، امنیت، و جمعبندی نهایی
مشاهده کاربران و گروهها از راه دور (Remote Access)
در محیطهای سازمانی یا شبکه های ابری، معمولاً لازم است اطلاعات کاربران و گروه ها را از یک سیستم دیگر بهصورت ریموت مشاهده کنیم. PowerShell این قابلیت را از طریق دستور Get-WmiObject و Invoke-Command فراهم کرده است.
روش اول: استفاده از WMI (Windows Management Instrumentation)
برای مشاهده کاربران محلی از سیستم دیگر (مثلاً نام سیستم Workstation1)، دستور زیر را وارد کنید:
Get-CimInstance -ComputerName Workstation1 -ClassName Win32_UserAccount -Filter “LocalAccount=True”
این دستور لیست تمام کاربران محلی موجود روی سیستم مورد نظر را نمایش میدهد، بدون اینکه نیاز باشد مستقیماً وارد آن شوید.
در صورتی که نام کاربری و رمز عبور مدیر آن سیستم را دارید، میتوانید از پارامتر -Credential نیز استفاده کنید:
$cred = Get-Credential
Get-WmiObject -ComputerName Workstation1 -Class Win32_UserAccount -Credential $cred
این روش زمانی بسیار کاربردی است که شما به چندین سیستم متصل هستید و میخواهید وضعیت کاربران را بهصورت متمرکز بررسی کنید.
روش دوم: استفاده از Invoke-Command
اگر سرویس PowerShell Remoting در سیستم مقصد فعال باشد، میتوانید دستور مشاهده کاربران را بهصورت مستقیم اجرا کنید:
Invoke-Command -ComputerName “Server01” -ScriptBlock { Get-LocalUser }
یا برای مشاهده اعضای گروه Administrators:
Invoke-Command -ComputerName “Server01” -ScriptBlock { Get-LocalGroupMember -Name “Administrators” }
با این روش میتوانید دهها سرور را در چند ثانیه بررسی کنید، بدون نیاز به ورود فیزیکی به هرکدام.
در زیرساخت های ابری مانند AradCloud نیز همین مکانیزم قابل پیاده سازی است.
رفع خطاهای متداول در مشاهده کاربران و گروه ها
گاهی در هنگام اجرای دستورات PowerShell خطاهایی رخ میدهد.
در جدول زیر متداولترین خطاها و راهحلهای آنها آورده شده است:
| نوع خطا | علت احتمالی | راهحل پیشنهادی |
| Access Denied | اجرای PowerShell بدون دسترسی ادمین | PowerShell را با Run as Administrator اجرا کنید |
| The term ‘Get-LocalUser’ is not recognized | ماژول LocalAccounts در سیستم نصب نیست | دستور Import-Module Microsoft.PowerShell.LocalAccounts را اجرا کنید |
| RPC Server Unavailable | ارتباط شبکهای با سیستم مقصد قطع است | از اتصال شبکه و فعال بودن PowerShell Remoting اطمینان حاصل کنید |
| Access is denied (Remote) | کاربر فعلی مجوز دسترسی به سیستم مقصد را ندارد | از دستور Get-Credential برای ورود با حساب مدیر استفاده کنید |
| Parameter not found | اشتباه در نوشتن پارامتر | از دستور Get-Help برای بررسی صحیح دستور استفاده کنید |
همیشه قبل از اجرای دستورات از دستور زیر برای بررسی پشتیبانی دستور در نسخه فعلی PowerShell استفاده کنید:
Get-Command Get-LocalUser
نکات امنیتی در مدیریت کاربران و گروه ها با PowerShell
PowerShell ابزاری بسیار قدرتمند است، و این قدرت به همراه مسئولیت امنیتی زیادی میآید. برای جلوگیری از خطرات احتمالی، نکات زیر را در نظر بگیرید:
1- همیشه از حساب Administrator اصلی استفاده نکنید.
برای مدیریت روزانه، از حسابهای دارای مجوز محدود استفاده کنید.
2- خروجی اطلاعات کاربران را رمزنگاری کنید.
اگر قصد ذخیره گزارش دارید، با استفاده از پارامتر -AsSecureString رمزگذاری کنید.
3- سطح دسترسی اسکریپت ها را محدود کنید.
اجرای اسکریپت های ناشناخته میتواند خطرناک باشد.
از دستور زیر برای تغییر سیاست اجرا استفاده کنید:
Set-ExecutionPolicy RemoteSigned
4- تغییرات مهم را لاگگیری کنید.
با دستور زیر میتوانید همه دستورات اجرا شده را در فایل لاگ ذخیره کنید:
Start-Transcript -Path “C:\Logs\UserActivity.log”
5- دسترسی ریموت را فقط در صورت نیاز فعال کنید.
سرویس PowerShell Remoting را تنها در شبکه های امن و داخلی روشن کنید:
Enable-PSRemoting -Force
ایجاد گزارش کامل از کاربران و گروه ها
PowerShell میتواند داده ها را در قالبهای مختلف (CSV، TXT، JSON) ذخیره کند.
برای ساخت گزارش کامل کاربران و گروه ها از دستورات زیر استفاده کنید:
گزارش کاربران
Get-LocalUser | Select-Object Name, Enabled, LastLogon | Export-Csv “C:\Reports\LocalUsers.csv” -NoTypeInformation
گزارش گروه ها
Get-LocalGroup | Select-Object Name, Description | Export-Csv “C:\Reports\LocalGroups.csv” -NoTypeInformation
گزارش اعضای گروه ادمین
Get-LocalGroupMember -Name “Administrators” | Export-Csv “C:\Reports\AdminMembers.csv” -NoTypeInformation
سپس میتوانید گزارشها را با ابزارهایی مثل Excel یا Power BI برای تحلیل امنیتی و مدیریتی بررسی کنید.
در سازمانهایی مانند AradCloud که چندین سرور مجازی و ابری دارند، این روش برای ممیزی داخلی (Internal Audit) بسیار حیاتی است.
ساخت اسکریپت خودکار برای بررسی روزانه کاربران
میتوانید با چند خط کد ساده، اسکریپتی طراحی کنید که هر روز کاربران جدید، غیرفعال یا اعضای جدید گروهها را شناسایی کند و گزارش دهد:
$today = Get-Date -Format “yyyy-MM-dd”
$users = Get-LocalUser | Where-Object {$_.Enabled -eq $true}
$groups = Get-LocalGroup
$report = [PSCustomObject]@{
Date = $today
ActiveUsers = $users.Count
TotalGroups = $groups.Count
}
$report | Export-Csv “C:\Reports\DailyUserReport.csv” -Append -NoTypeInformation
این فایل CSV را میتوانید بهصورت روزانه در Task Scheduler اجرا کنید تا همیشه وضعیت کاربران سیستم خود را بدانید.
مشاهده کاربران دامنه ای (Domain Users) در Active Directory
در سرورهای سازمانی (Domain Controllers)، کاربران و گروه ها دیگر محلی نیستند بلکه در Active Directory ذخیره میشوند.
برای مشاهده آنها از دستورهای زیر استفاده میشود (پیشنیاز: نصب ماژول Active Directory):
Import-Module ActiveDirectory
Get-ADUser -Filter * | Select-Object Name, Enabled, Department
برای مشاهدهی گروه ها:
Get-ADGroup -Filter * | Select-Object Name, GroupCategory, GroupScope
و برای مشاهده اعضای یک گروه خاص:
Get-ADGroupMember -Identity “IT-Admins”
این دستورات در سازمانهایی که از زیرساخت دامنه استفاده میکنند (مثل بانکها، مراکز داده یا محیطهای ابری ابرآراد) ضروری هستند
برای استفاده از دستورات Get-ADUser، باید ویژگی RSAT (Remote Server Administration Tools) روی ویندوز نصب باشد. بدون RSAT، حتی با Import-Module هم دستوری کار نمیکند (مگر روی خود ویندوز سرور).
تفاوت بین کاربران محلی و دامنهای
| ویژگی | کاربر محلی (Local) | کاربر دامنهای (Domain) |
| محل ذخیرهسازی | سیستم محلی | کنترلر دامنه (Active Directory) |
| مدیریت | فقط در همان سیستم | از طریق سرور مرکزی |
| امنیت | محدود به دستگاه | سیاستهای امنیتی سازمانی |
| ابزار مدیریت | PowerShell محلی (Get-LocalUser) | PowerShell AD (Get-ADUser) |
| کاربرد | لپتاپها و کامپیوترهای شخصی | سازمانها و سرورها |
در محیطهای ابری مانند AradCloud، معمولاً از ساختار دامنهای برای یکپارچگی و کنترل مرکزی استفاده میشود.
جمعبندی
در این آموزش از سری مقالات آموزش سیستم عامل بلاگ ابرآراد، یاد گرفتید چگونه با استفاده از PowerShell:
- کاربران و گروه ها را مشاهده کنید
- اعضای گروه ها را بررسی کنید
- از راه دور کاربران را کنترل نمایید
- گزارشهای تحلیلی تولید کنید
- و با نکات امنیتی و خطاهای متداول آشنا شوید
PowerShell ابزاری است که اگر آن را بیاموزید، مدیریت دهها سرور یا سیستم به سادگی چند خط کد خواهد بود.
برای مدیران فناوری اطلاعات و تیمهای زیرساخت ابری، تسلط بر این ابزار، گامی بزرگ به سوی مدیریت خودکار (Automation) و امنیت متمرکز است.
سوالات متداول
1- آیا میتوان کاربران را بدون ورود به سیستم مقصد مشاهده کرد؟
بله، با استفاده از Get-WmiObject یا Invoke-Command و داشتن مجوز ادمین.
2- دستور Get-LocalUser در همه نسخههای ویندوز کار میکند؟
در ویندوز ۱۰ و بالاتر با PowerShell 5.1 به بعد پشتیبانی میشود.
3- اگر PowerShell خطای دسترسی بدهد چه باید کرد؟
با اجرای PowerShell در حالت Administrator یا استفاده از Get-Credential خطا برطرف میشود.
4- آیا میتوان خروجی دستورات را به فایل اکسل منتقل کرد؟
بله، کافی است از Export-Csv استفاده کنید. فایل خروجی را میتوانید با Excel باز کنید.
5- آیا مشاهده کاربران با پاورشل خطر امنیتی دارد؟
خیر، اگر صرفاً خواندن اطلاعات انجام شود و تغییری در سیستم ایجاد نگردد. با این حال باید مراقب افشای داده های حساس باشید.


