در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

پیدا کردن و حذف کاربران بلا استفاده در اکتیودایرکتوری

برای اینکار هم نرم افزار وجود داره و هم میتونی از دستورات خود Active directory استفاده کنی که من توصیه میکنم از دستور DSQuery استفاده کنی که همونجور که از اسمش مشخصه برای Query گرفتن از Active Directory هست :

  • پیدا کردن کاربران غیر فعال در طول مثلا 4 هفته پیش :
  • C:\> dsquery user -inactive 4
    
  • پیدا کردن کاربران غیر فعال در طول مثلا 4 هفته پیش و غیر فعال کردنشون :
  • C:\> dsquery user -inactive 4 | dsmod user -disabled yes 
    

نکته :

  1. بعد از اینکه کاربرا یا کامپیوتر های رو غیر فعال کردی بلافاصله اونها رو حذف نکن و یک OU درست کن و همه رو داخل اون بریز ، یه مدت چند روزی صبر کن اگر صدای کسی در نیومد بعد پاکشون کن .
  2. همیشه سعی کن یک بار در زندگیت این کارو انجام بدی برای شرکت و طوری کار کن که همه چیز مستند بشه ، یعنی اینقدر خوب مستند سازی کن بعد از این کار که همه کاربرا و کامپیوتر های توضیحات داشته باشن و اینجوری نظم کاریتو حفظ کن.
  3. دقت کن که عدد 4 هفته رو نشون میده نه روز و واحد شمارش اینجا هفته هست.
  4. در دستورات مربوط به Active Directory در صورتی که بخایم خروجی یک دستور رو به عنوان ورودی دستور دیگه بکار ببریم از علامت Pipe یا | استفاده می کنیم.
  5. همین کارو برای کامپیوترهای غیر فعال هم میتونی انجام بدی فقط به جای User باید Computer رو بنویسی .

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


#پاکسازی_اکتیوداریرکتوری #پاکسازی_اطلاعات_اکتیودایرکتوری #defragment_کردن_اکتیودایرکتوری #کاربران_بلا_استفاده_در_اکتیو_دایرکتوری #کامپیوترهای_بلا_استفاده_در_شبکه #آموزش_استفاده_از_dsadd #query_گرفتن_از_اکتیودایرکتوری #کاربرد_دستور_ntdsutil #مدیریت_اکتیودایرکتوری_با_ntdsutil
26 نظر
Nushin

در روش فوق، چگونه می‌توان لیست کاربرانی را برگرداند که disable نیستند؟

به عنوان مثال فرض کنید که در روش فوق به جای pipe کردن خروجی و disable کردن همه کاربرهای لیست شده، بخواهیم این کار را دستی انجام دهیم و یک به یک اقدام به انتخاب و تصمیم گیری در مورد disable کردن آنها بنماییم.

در این صورت مطلوبست که در دفعات بعدی اجرا، لیست کاربرانی که وضعیت آنها disable نیست ولی در بازه مورد نظر ما غیر فعال بودند برگردانده شود (به عبارت دیگر، کاربرانی را که در اجراهای قبل disable کردیم فیلتر کند و نمایش ندهد.)

محمد نصیری

منظورتون رو درست متوجه نشدم !! لیست کاربرانی که در حال حاضر از قبل Disable نشدن خوب یعنی لیست کاربران فعال !!! درسته ؟

محمد نصیری

دوست عزیز ، در دستوری که نوشته شده ما کاربران disable رو شناسایی نمیکنیم ، در حقیقت فکر میکنیم اینجا بین Disable و Inactive براتون ابهام ایجاد شده ، ما در اینجا کاربرانی رو شناسایی میکنیم که inactive بودند ، یعنی در طی مدت یک ماه یا 4 هفته گذشته به سیستمشون ورود از طریق اکتیودایرکتوری نداشتند یعنی از دامین کنترلر به عنوان سیستم مرکزی احراز هویت استفاده نکردند . قاعدتا کاربری که جزو این لیست نیست جزو کاربران فعال و اکتیو محسوب میشه . شما میتونید لیست کاربرای inactive رو اکسپورت بگیرین و بعد انتخاب کنین که کدوم باشه و کدوم نباشه . باز شما دقیقا کاری رو که قصد دارین انجام بدین رو تشریح کنین تا جاییکه بتونم کمکتون میکنم.

Nushin

@ما کاربران disable رو شناسایی نمیکنیم.

درسته ولی کاربران شناسایی شده را disable میکنیم (در دستور دوم)، یا به هر حال قصد disable کردن آنها را داریم.

@ما در اینجا کاربرانی رو شناسایی میکنیم که inactive بودند

درسته، در دستور اول. ولی اگر کاربری disable باشد، تمایلی به دانستن اینکه آیا فعالیتی در آن بازه داشته است یا نه، نداریم و نمیخواهیم در لیست بیاید.

در ضمن دستور:

dsquery user -inactive 4 -disabled

معکوس خروجی مورد نظر را بر می گرداند (یعنی کاربرانی که علاوه بر نداشتن فعالیت، disable هم هستند)

ولی دستوری شبیه به این نداریم:

dsquery user -inactive 4 -enabled

که کاربرانی را برگرداند که فعالیت نداشته اند ولی همچنان enable باقی مانده اند!

محمد نصیری

من همچنان دارم دنبال راهکار ساده ترین برای حل این مشکل میگردم اما یه راهکاری دارم که معمولا خودم از این روش استفاده می کنم ، اول یک OU به نام Disabled Accounts ایجاد میکنم و بعد با استفاده از دستور زیر aacount های غیر فعال شده رو به اون منتقل می کنم :

dsquery user -disabled | dsmove user -newparent "ou='disabled account',dc=etc,dc=etc,dc=etc"

خوب بعد از این از همون دستور dsquery استفاده می کنیم ولی براش OU خاصی رو برای query رد نظر میگیریم :

dsquery user -inactive "ou='disabled account',dc=etc,dc=etc,dc=etc"

البته قاعدتا در قسمت دوم باید مسیر OU جدید رو وارد کنی که میخای داخلش جستجو کنی و ساختار distinguished Name رو هم باید رعایت کنی که مشکلی پیش نیاد.

محمد نصیری

خوب فکر کنم در نهایت می تونی از دستور ترکیبی زیر استفاده کنی که یک خروجی خوب هم بهت میده :

dsquery user -inactive 4 -limit 0 | dsget user -fn -ln -samid -disabled | find /v "dsget" | find /v "samid" | find /v "yes" >>c:\users.tx
نیما پاک نیا

سلام

من فرمان را اجرا کردم ولی user هایی که بهم داد خییلی کمتر از حد انتظارم بود

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

محمد نصیری

خیر ، این دستور کاملا دقیق هست و مطمئن باشید نتیجه درستی میده ، توجه کنید که هرگونه Login به سیستم از طرف این سیستم فعال بودن کاربر رو می رسونه حالا الزامی نیست کاربر وارد سیستم بشه شما اگر سرویسی داشته باشید که با اکانت اون کاربر وارد سیستم بشه همون برای فعال بودن این کاربر کافی هست ، از طرفی ممکنه اشخاصی در شبکه شما چند کاربر داشته باشند.

این نظر توسط UNITY در تاریخ يكشنبه, 4 اسفند 1392 حذف شده است.

دلیل: مورد مطرح شده ارتباطی با موضوع سئوال ندارد

b.valadkhani

این دستورات در ویندوز سرور 2003 هم کاربرد داره؟

b.valadkhani

این command روی سرور 2003 هم به خوبی اجرا شد و در برقراری نظم AD سازمان به من خیلی کمک کرد.

b.valadkhani

دستوری رو که کاربر Nushin اعلام کردن، یعنی دستور

dsquery user -inactive 4 -disabled

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

در مجموعه من user های خیلی زیادی هستند که diable هستند اما این خروجی فقط تعداد کمی از User ها را در خروجی نمایش داد.

محمد نصیری

شما یک پارامتر limit- ۰ باید اضافه کنید

b.valadkhani

ممنونم. میشه شکل کلی دستور رو برام زحمت بکشین بنویسن؟

یعنی دقیقاً به چه شکلی باید دستور رو وارد کنم؟

من به این شکل وارد کردم که خروجی دستور می گفت ساختارت اشتباه هست.

dsquery user -inactive 4 -disabled limit-0

این دستور خروجی نداد! به چه شکل باید وارد کنم؟

ممنون.

محمد نصیری

به شکل زیر وارد کنید :

dsquery computer -limit 0 -inactive 4
b.valadkhani

ممنونم از راهنمایی تونو

میشه توضیح بدین که اضافه کردن این قسمت به command مربوطه دقیقاً باعث اجرای چه فرایندی میه؟ یعنی با اضافه کردن اون ما داریم به AD چی میگیم؟ مثلاً inactive 4 یعنی 4 هفته گذشته. منظور از limit-0 چی هست و ما چه کاری رو با زدن اون داریم انجام میدیم؟ آیا حالات های دیگه ای هم داره limit?

محمد نصیری

اگر تعداد کاربران بالا باشه یا کامپیوترها برای نمایش اونها محدودیت پیشفرض وجود داره با این سویچ شما میگید محدودیت نمایش رو حذف کنه ... limit یعنی محدودیت ... limit وقتی صفر هست یعنی محدودیتی در نمایش تعداد کاربران و کامپیوترها نداشته باشید.

b.valadkhani

بیینید من دقیقاً همین Command رو اجرا کردم ولی خروجی که به من داده میشه (تعداد User هایی که از سال ها قبل در AD موجود هستن خیلی بیشتر از این هاست) اما فقط تعداد خیلی کم و محدودی رو توی خروجی میده.

>dsquery user -limit 0 -inactive 4 
محمد نصیری

خوب حتما همین تعداد هستند ، خروجی درست هست شک نکنید

کسری قاسمی

با این دستور می خوام تمام کاربرهایی که disabled هستند بروند در ou=disabled-account

این دستور زمانی انجام میشه که فقط یک کاربر Disabled هست چطور میتونم تمام کاربرهای disabled را انتقال بدهم؟

dsquery user -disabled dc=it,dc=ir | dsmove -newparent ou=disabled-account,dc=it,dc=ir

کسری قاسمی

از طریق PowerShell و با استفاده از این دستور انجام شد:

Search-ADAccount –AccountDisabled –UsersOnly –SearchBase “OU=OUName, DC=DomainName, DC=com” | Move-ADObject –TargetPath “OU=Disabled-Users, DC=DomainName,DC=com”

صادق عبادالهی

سلام به همه. من یک وب سایت دارم راه اندازی میکنم. توی پیاده سازی خیلی دنبال کد نویسی نیستم، بیشتر میخوام برنامه هایی که قبلا نوشته شده و قابل استفاده هست رو در کنار هم قرار بدم . به نظر شما برای User Store (یا همون بخشی که مربوط به ثبت نام کاربر و مدیریت کاربران و لاگین هست) منطقیه از اکتیو دایرکتوری استفاده کنم؟

محمد نصیری

خیر به هیچ عنوان ، اکتیودایرکتوری برای استفاده Public اصلا توصیه نمیشه چون مکانیزم ثبت نام نداره.

صادق عبادالهی

ممنون از پاسختون. میشه راهنمایی کنید چطور میتونم یه user store مناسب برای این پروژه باید پیدا کنم؟ من دنبال کد نویسی برای این کار نیستم، چون قطعا اگر بخوام کد بنویسم، از نظر کیفی با نمونه هایی که توی بازار هست خیلی خیلی فاصله خواهد داشت. بنابراین ترجیحا میخوام از user store ی استفاده کنم که استانداردهای لازم و همچنین قابلیت integrate با سایر نرم افزارهای موجود (مانند Billingها، Dashboardها، Help Deskها و ...) رو داشته باشه.

محمد نصیری

این سئوال شما ارتباطی اصلا به موضوع این مطلب نداره لطفا سئوال مجزا ارسال کنید کاملا تشریح کنید منظورتون از User Store چیست هست و چه انتظاراتی دارید که بهتر بشه پیگیری کرد.

صادق عبادالهی

ممنون از پاسختون. من قبلا این مورد رو با اشکال مختلف به عنوان سئوال ارسال کردم ولی متأسفانه فکر میکنم تا حالا کسی از دوستان این مشکل براش پیش نیومده باشه. چون همه سئوالات بی جواب موندن.

لینک

لینک

ضمنا در لینک دومی توضیحات تکمیلی و کاملتر (طبق دستور شما) اضافه شد.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....