جستجو در منابع سایت

گزارش‌گیری از اکتیو دایرکتوری با ابزار خط فرمان 2

این مورد را ارزیابی کنید
(0 votes)

در این مقاله یکی از دستورات کاربردی PowerShell جهت گزارش‌گیری را بررسی می‌کنیم. همچنین اسکریپتی ارائه خواهیم کرد تا بتوانید کاربران مسدود در دامین خود را مشاهده کنید.

                                

                                    دریافت فایل
                                

در مقاله قبل، به اختصار چند دستور خط فرمانی و پاورشلی که در گزارش‌گیری از اکتیو دایرکتوری مفید هستند را معرفی کردیم. یکی از پرکاربردترین این دستورات، دستور Get-ADUser است که لیستی از کاربران را به شما باز می‌گرداند. بزرگترین ویژگی این دستور که آن را بسیار انعطاف‌پذیر کرده است، ویژگی فیلترینگ آن است. برای مثال به دستور زیر توجه کنید:

> Get-ADUser –Filter *

این دستور فهرست کاملی از کاربران را به شما برمی‌گرداند، که البته چندان کاربردی به نظر نمی‌رسد. اما امکان فیلترینگ به شما کمک می‌کند تا فقط تعدادی از کاربران که شما توسط شرط‌های فیلترینگ مشخص می‌کنید نمایش داده شوند. برای مثال دستور زیر لیست تمامی کاربرانی که آدرس ایمیل آنها با عبارت ali شروع می‌شود را بازمی‌گرداند.

> Get-ADUser –Filter {EmailAddress -like "ali*"}

در حقیقت، در صورتی که شناخت کاملی از صفات یا همان attributeهای اکانت کاربری داشته باشید، می‌توانید گزارشات مختلف و کاربردی تهیه کنید. در فیلترینگ شما می‌توانید به روش‌های مختلفی مقایسه انجام دهید. برای مثال، -like برای مقایسه‌ی برابری دو رشته‌ی متنی، -notlike برای مقایسه‌ی عدم برابری دو رشته متنی، -eq برای مقایسه‌ی برابری دو مقدار، -ge برای بررسی بزرگتر و مساوی بودن استفاده می‌شود. برای مثال فرض کنید می‌خواهید بررسی کنید که برای چه کاربرانی آدرس ایمیل غیرمعتبر درج شده است. همان‌طور که می‌دانید در ساختار ایمیل ابتدا یک عبارت، سپس @ و سپس نام دامین که همراه با نقطه یا dot است باید وجود داشته باشد. در غیر این صورت ایمیل اشتباه خواهد بود. حال به کمک آنچه گفت شد، می‌توانید به کمک دستور زیر لیست کاربرانی که ایمیل آنها صحیح نیست را بدست بیاورید:

> Get-ADUser –Filter {EmailAddress -notlike "*@*.*"}

توجه داشته باشید که هر کجا از حرف * استفاده شود، بدین معنی است که هر نوع و هر تعداد کاراکتری می‌تواند در آن جایگاه قرار بگیرد. همین مثال ساده به خوبی نمایانگر قدرت بالای استفاده از ابزارهای پاورشل است. به عنوان مثالی دیگر، فرض کنید می‌خواهیم کاربرانی که اکانت آنها مسدود (lockout) شده است را مشاهده کنیم. اکانت‌های مسدود شده، شامل کاربرانی می‌شود چندین بار رمز عبور خود را اشتباه وارد کرده‌اند.

 

Borna AD manager

 

اکانت‌های کاربری دارای صفتی هستند به نام lockoutTime که زمانی که کاربر مسدود شده است را نشان می‌دهد. هر گاه که کاربر یک لاگین موفق داشته باشد مقدار این صفت برابر با صفر می‌شود که نشان می‌دهد که کاربر مسدود نشده است. بنابراین به کمک دستور زیر می‌توانید اکانت‌های غیر مسدود را مشاهده کنید:

> Get-ADUser –Filter {LockOutTime –eq 0}

نکته قابل توجه اینجاست که این دستور واقعاً تمامی کاربرانی که مسدود نیستند را بر نمی‌گرداند. فرض کنید تعدادی اکانت جدید ساخته‌اید که هنوز کاربری با آنها لاگین نکرده است. در چنین شرایطی، مقدار فیلد lockouTime این کابران خالی بوده و در این جستجو نمایش داده نخواهد شد. حال فرض کنید می‌خواهیم اکانت‌هایی که مسدود شده‌اند را مشاهده کنیم. راه‌کاری که به ذهن هر کس ممکن است برسد این است که مقدار LockOutTime را بررسی کنیم و در صورتی که بزرگتر یا مساوی 1 بود، یعنی اکانت مسدود است. خروجی این دستور در شکل 1 نشان داده شده است.

شکل 1. مشاهده لیست کاربرانی که اکانت آنها مسدود شده است.

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

اما راه حل چیست؟ بدست آوردن لیست کاربرانی که اکانت آنها مسدود شده است کمی پیچیده‌تر از آن است که بتوان با Get-ADUser آن را انجام داد. شما در حقیقت باید ابتدا lockOutTime کاربران را دریافت کنید، سپس بررسی کنید که زمان lockOutDuration چقدر است. این مقدار مشخص می‌کند اکانت کاربر تا چه زمانی مسدود باقی بماند. سپس زمان کنونی را در نظر گرفته، و بررسی کنید که آیا به اندازه‌ی lockOutDuration از زمان lockOutTime گذشته است یا نه. این کار عملا فقط توسط اسکریپت نویسان حرفه‌ای ممکن است.

 

Borna AD manager

 

ما برای تسهیل این امر، اسکریپت آن را به صورت آماده نوشته‌ایم که شما می‌توانید آن را دانلود کنید. ابتدا پسوند فایل از txt به vbs تغییر دهید و به کمک دستور زیر آن را اجرا کنید:

> cscript FindLockedOutUsers.vbs

دانلود فایل FindLockedOutUsers.vbs برای مشاهده‌ی کاربران مسدود شده

شکل 2. خروجی FindLockedOutUsers به منظور مشاهده‌ی کاربران مسدود شده

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

 

خواندن 1048 دفعه
ayande.jpgdarya-navardi.jpgeghtesad-novin.jpgfolad-khozestan.jpggoldiran.jpggorgan.jpgirna.jpgmarkazi.jpgmaskan.jpgnosazi.jpgpasargad.jpgpetroshimi.jpgrefah.jpgrightel.jpgsarmayeh.jpgsepah.jpgshoraye-ali.jpgtejarat.jpg
opportunity job

Please enter a valid email address,for download ./ لطفاً جهت دانلود فایل، ایمیل خود را وارد نمایید:

×