درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
دوره های مرتبط
دوره های توسینسو
آموزش مانیتورینگ شبکه با نرم افزار قدرتمند ManageEngine OpManager
مدرس: جعفر قنبری شوهانی
این دوره را در 9 قسط خریداری کنید
دوره آموزشی سیسکو آسان است
مدرس: صادق شعبانی
این دوره را در 35 قسط خریداری کنید
آموزش جامع نصب و پیکربندی Network Monitor Cacti Server
مدرس: پوریا تعبدی
این دوره را در 1 قسط خریداری کنید
بهترین دوره آموزشی بین المللی +CompTIA Network در دنیا
مدرس: محمد نصیری
این دوره را در 64 قسط خریداری کنید
دوره آموزشی نصب ، راه اندازی و پیکربندی ایمیل سرور MDaemon
مدرس: علی آقامیری
این دوره را در 10 قسط خریداری کنید
دوره آموزشی نرم افزار ریموت دسکتاپ Team Viewer
مدرس: صادق شعبانی
این دوره را در 3 قسط خریداری کنید
دوره آموزشی راه اندازی کلیه VPN سرورهای مایکروسافت
مدرس: محمد نصیری
این دوره را در 3 قسط خریداری کنید
دوره آموزشی بین المللی MCSA ویندوز سرور 2012 کد 70-410
مدرس: اسحاق احمدپور
این دوره را در 37 قسط خریداری کنید
دوره آموزشی تجزیه و تحلیل ترافیک شبکه با Wireshark
مدرس: محمد عابدینی
این دوره را در 5 قسط خریداری کنید
دوره آموزشی تخصصی مانیتورینگ شبکه Zabbix در لینوکس
مدرس: مجتبی اسمائی
این دوره را در 25 قسط خریداری کنید
دوره آموزشی جامع مانیتورینگ شبکه با Solarwinds و ماژول ها
مدرس: جعفر قنبری شوهانی
این دوره را در 6 قسط خریداری کنید
دوره آموزشی مدیریت کلاس از راه دور و مانیتورینگ با NetOP
مدرس: صادق شعبانی
این دوره را در 2 قسط خریداری کنید
دوره آموزشی سناریوهای کاربردی و متنوع در تجهیزات سیسکو با سهیل قاسمی
مدرس: ُسهیل قاسمی
این دوره را در 14 قسط خریداری کنید
دوره آموزشی نصب ، راه اندازی و پیکربندی فایل سرور Serv-U
مدرس: کاظم تقندیکی
این دوره را در 11 قسط خریداری کنید
آشنایی با زیرساخت های شبکه و پیکربندی کامل مودم های ADSL
مدرس: پوریا تعبدی
این دوره را در 3 قسط خریداری کنید
دوره آموزشی مقدماتی نرم افزار Wireshark
مدرس: محمد عابدینی
این دوره را در 8 قسط خریداری کنید
نصب ویندوز به روش Backup های مستقل از سخت افزار با Acronis True Image
مدرس: میلاد فشی
این دوره را در 4 قسط خریداری کنید
دوره آموزشی نرم افزار وایرشارک ( Wireshark )
مدرس: مریم علی زاده
این دوره را در 10 قسط خریداری کنید
دوره آموزشی جامع نصب و راه اندازی انواع FTP سرور
مدرس: کاظم تقندیکی
این دوره را در 7 قسط خریداری کنید

ایجاد تعدادزیادی یوزر در ADبا Powershell

4 نظرات
105 بازدیدها
سلام به همه بچه های ITPro، تو این آموزش میخوام با کمک دستورات Powershell تعداد زیادی یوزر به اکتیو دایرکتوری اضافه کنم .
توی پاورشل دستورات به این صورت هست که اگه بخوایم شی جدید ایجاد کنیم اون دستور با new شروع میشه، اگه بخوایم شی اضاف کنیم دستور با Add شروع میشه، Remove واسه پاک کردن و ... مثلا واسه ایجاد یه OU جدید از دستور New-ADOrganizationUnit یا واسه حذف OU از Remove-ADOrganizationalUnit استفاده میکنیم. زمانی که دستور توی پاورشل اجرا میکنیم ،پاورشل تنها زمانی به ما پیغام نشون میده که دستور اجرا نمیشه پس هروفت دستورمون کامل اجرا شد چیزی نشون نمیده .
خوب در ابتدا با چند تا دستور آشناتون میکنم بعد شروع میکنیم به برنامه نویسی تو محیط پاورشل .
Image

1) New-ADUser : اضافه کردن یه یوزر جدید
2) Remove-ADUser : حذف یوزر مورد نظر
3) New-ADGroup : اضافه کردن یه گروه جدید
4) Remove-ADGroup : حذف گروه مورد نظر
5) Set-ADUser : ست کردن مقادیر جدید واسه یوزر مورد نظر
6) Set-ADGroup : تغییر مشخصات گروه مورد نظر
7) Get-Help : کمک گرفتن از powershell
8) Set-ExecutionPolicy : تنظیم کردن ExecutionPolicy (این دستور در ادامه توضیح میدم)
9) Get-ExecutionPolicy : گرفتن مقدار تنظیم شده ExecutionPolicy
10) Set-ADAccountPassword : ست کردن رمزعبور واسه یوزر
دستور ساخت User :
Image

همه دستور پشت سر هم تایپ کنید بعد کلید Enter بزنید .
اسم فارست من WolfSecTeam.com هست و دوتا OU بنام Wolfuser و WolfComputer توی اکتیو دایرکتوری درست کردم که کامپیوترها توی WolfComputer هست و یوزرها هم توی WolfUser ، خوب حالا دستور بالا یه یوزر به نام mina mansuri توی WolfUser ایجاد میکنه .
Name- : نام یوزر
DisplayName- : نام نمایشی یوزر
GivenName- : اسم کوچک یوزر
Surname- : نام خانوادگی یوزر
PasswordNeverExpires- : یعنی میخوایم پسورد تاریخ انقضا داشته باشه یا نه .
ChangePasswordAtLogon- : یعنی موقعی که یوزر واسه اولین بار وارد میشه پسوردشو تغییر بده یا نه .
AccountPassword- : پسورد یوزر
Path- : مسیر جایی که میخوایم این یوزر اونجا ساخته بشه
Enabled- : یعنی موقعی که یوزر ساخته میشه، اکانت کاربریش فعال باشه یا نه .
SamAccountName- : نام کاربری که یوزر با اون وارد ویندوز میشه .
UPN : -UserPrincipalName یوزر
خوب حالا که با چند تا دستور آشنا شدید می یایم و با استفاده از powershell یه برنامه مینویسیم، که یه فایل بعنوان ورودی میگیره و اتوماتیک تمام یوزرها رو ایجاد میکنه .
این ورودی فقط شامل نام و نام خانوادگی یوزرهاست .
یه مثال میزنم، من میخوام 10 تا یوزر اتوماتیک اضافه کنم به اکتیو دایرکتوری . این مقادیر ورودی هست که توی یه فایل ذخیره شده به نام fname_lname.txt :
Image

و اینم کد برنامه که توی فایلی به نام get__user.ps1__ ذخیره شده (ps1 فرمت فایل های پاورشل هست ) فقط باید خط 16 و 17 توی کد بهم بچسبونید (17 ادامه 16 هست، چون این دو خط باید توی یه خط پشت سرهم باشن و بخاطر این که تمام کدها تو عکس بیوفته من توی دو خط نوشتم )
Image

توضیح کد:
موقعی که میخوایم یه متغیر توی پاور شل تعریف کنیم ابتدای اون $ میزاریم. خود پاورشل دارای چند تا متغیر از پیش تعریف شده هم هست مثل false$ یا true$ .
واسه توضیحات از # استفاده میشه .
Read-Host : این دستور یه ورودی از یوزر میگیره .
AsSecureString- : این سوییچ واسه اینکه که هر کاراکتری که یوزر وارد میکنه تبدیلش کنه به ستاره ( امنیت رمزعبور بالا میره مثلا اگه کسی پیش یوزر باشه نمیتونه بفهمه یوزر چی وارد میکنه )
"p@ssw0rd" : یه متن نمایشی (توی عکس هنگام اجرای کد معلومه)
Verbose- : برعکس AsSecureString هست، یعنی کاراکترای وارد شده بصورت معمولی نمایش میده .
خط اول کد رمزعبور یوزر میپرسه (واسه ساخت یوزر) و خط دوم هم یه اسم از یوزر میپرسه به عنوان اسم OU ی که میخوایم یوزرها اونجا ساخته بشن .
خط سوم یه شمارنده هست (موقعی که کدمون اجرا میکنیم و یوزرها ساخته میشن، برنامه به ما یه خروجی میده که میگه این یوزرها اضافه شدن به AD، این شمارنده فقط واسه چاپ شماره ردیف یوزر ساخته شده هست )
خط چهارم یه OU برای ما میسازه .
خط پنجم یه حلقه گذاشتم که تمام مقادیر fname_lname.txt میخونه و خط به خط توی متغیر tmp$ میریزه .
split : این تابع نسبت به ورودی جداکنندش که ; هست مقادیر از از هم جدا میکنه (یعنی اگه مقدار mohammad;razmi ورودی تابع باشه mohammad از razmi جدامیکنه )
@ : هروقت بخوایم آرایه تعریف کنیم از این کاراکتر استفاده میکنیم .
خط هشتم مقادیر توی tmp$ میریزه توی آرایه name$ .
خط نهم خونه اول آرایه name$ توی متغیر fname$ میریزه .
خط دهم خونه دوم آرایه name$ توی متغیر lname$ میریزه .
ما یه قانون برای خودمون گذاشتیم که نام کاربری یوزر اینجوری تولید میشه که میایم کاراکتر اول اسم کوچک بهمراه نام خانوادگی بهم میچسبونیم میشه نام کاربری .
(Substring(0,1 : تابعی هست که نسبت به ورودیش کاراکتر جدا میکنه
خط یازدهم : تابع Substring میاد از کاراکتر صفرم به تعداد یک کاراکتر (که میشه کاراکتر اول fname$ ) برای ما برمیگردونه و میریزه توی متغیر finitial$ .
خط دوازدهم : مقدار متغیر item$ میچسبونه به کاراکتر ( و بعد میچسبونتش به fname$ و چند تا فاصله و lname$ .
"n`" : این کاراکتر عمل enter واسه ما توی چاپ انجام میده (یعنی میخوایم بعد از اینکه برنامه اجرا شد خروجی بصورت زیر باشه)
Image

ولی اگه "n`" از آخر کد حذف کنیم خروجی بصورت زیر نمایش داده میشه
Image

خط سیزدهم : مقدار متغیر finitial$ و lname$ را به هم میچسبونه و میریزه توی متغیر user$ (به عنوان نام کاربری یوزر)
خط چهاردهم : متغیر user$ به wolfsecteam.com@ میچسبونه و UPN تشکیل میده .
خط پانزذهم : مسیر ساخت یوزر ها
خط شانزدهم هم که دستور ساخت یوزر هست .
و در آخر خط هجدهم هم یه خروجی واسه ما چاپ میکنه که میگه این یوزر ها اضافه شدن به Active Directory
فقط یه نکته باقی میمونه و اونم اینکه پاورشل بصورت پیشفرض اجازه اجرای هیچ کدی روی سرور نمیده (این یه فیچر امنیتی هست) مگه اینکه تنظیمات پیشفرضشو تغییر بدیم بصورت زیر :
اگه بخوایم بدونیم پیشفرض پاورشل واسه اجرای کد چیه، از دستور Get-ExecutionPolicy که قبلاً ذکر کردم استفاده میکنیم .
Image

که پیشفرض Restricted هست و اگه بخوایم کدمونو اجرا کنیم با خطا روبه رو میشیم .
Image

حالا چند تا از مقادیری که میشه بجای این مقدار ست کنیم براتون توضیح میدم .
1) اگه ExecutionPolicy با مقدار Unrestricted ست کنیم یعنی اجازه اجرای هرکدی داریم حالا اون کد میتونه توسط یه ناشر معتبر تایید شده باشه (تایید بشه یعنی یه ناشر معتبر روی کد امضای دیجیتال بزاره) یا هم تایید نشده باشه یا اینکه خودمون اون کد بنویسیم، در هرصورت هر کدی اجازه اجراشدن داره .
2) RemoteSigned : بهترین گزینه واسه ست کردن این مقدار هست ، موقعی که این مقدارو ست میکنیم پاورشل اجازه اجرای کدهای معتبر(دارای امضای دیجیتال) میده حتی کدهایی که خودمون اونارو نوشتیم هم اجازه اجرا دارن ولی کدهای که امضای دیجیتال ندارن اجازه اجرا ندارن .
3) AllSigned : اگه این مقدارو ست کنیم فقط کدهایی که امضای دیجیتال دارن اجازه اجرا شدن دارن حتی کدی هم که خودمون نوشتیم هم اجازه اجرا ندارن .
پس درنتیجه ExecutionPolicy با RemoteSigned ست میکنیم که بهتزن گزینه هست .
Image

و حالا میتونیم کدی که نوشتیم اجرا کنیم و نتیجه رو ببینیم .
Image

برنامه یه OU به نام ITUser برای ما ایجاد کرد و یوزرهارو توی اون OU ساخت .
اینم نتیجه پایانی
Image

امیدوارم این آموزش براتون مفید بوده باشه .

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

در حال دریافت اطلاعات

نظرات
  • ممنونم از آموزش شما
    لطفا اگر ممکنه دستوراتی که در تصاویر دیده میشه و باید اجرا بشن رو بصورت متن به مقاله اضافه کنید تا در صورت بروز مشکل در زمان اجرای دستور ، بهتر بشه رفع اشکال کرد .
  • اینم کد برنامه که خواسته بودید بقیه دستورات توی متن مقاله هست، فقط به ابتدای خطهای 3 و 9 و 10 و 11 یه کاراکتر $ اضافه کنید، من خودم ابتدا اضافه کردم ولی متن کد میریزه به هم به خاطر همین حذفش کردم و همچنین خط 16 و 17 پشت سر هم توی یه خط باشن وگرنه موقع اجرای برنامه خطا میگیرید . فقط اینم بگم که قبل از اینکه برنامه اجرا کنید ابتدا توی پاورشل با دستور CD به مسیر برنامه برید و بعدش حتما این دوتا کاراکتر //. به ابتدای اسم برنامه اضافه کنید ( اسم برنامه من get__user.ps1__ هست که موقع اجرا مینویسم get__user.ps1__//. )

    "pass = Read-Host -AsSecureString "p@ssw0rd$
    "OU = Read-Host -Verbose "Organization Unit$
    item = 0
    "New-ADOrganizationalUnit -Name $OU –path "dc=wolfsecteam,dc=com
    ((foreach($tmp in (get-content ./fname_lname.txt
    }
    ++item$
    ((";")name = @($tmp.split$
    [fname = $name[0
    [lname = $name[1
    (finitial = $fname.Substring(0,1
    "fn_ln += $item.ToString()+") "+$fname+" "+$lname+"`n$
    user = $finitial+$lname$
    "upn = $user+"@wolfsecteam.com$
    "path = "ou="+$OU+",dc=wolfsecteam,dc=com$
    New-ADUser -Name $fname$lname -AccountPassword $pass -DisplayName $user -GivenName $fname -Surname $lname -ChangePasswordAtLogon $true -Path $path -SAMAccountName $user -UserPrincipalName $upn –Enabled $true
    {

    echo "add users follow :"$fn_ln

  • ممنونم خیلی مفید بود. تشکر
  • سلام
    مشکلی که در کد زیر دارم اینه که خط آخر اصلا به من خروجی نمیده . (یعنی از $disk به بعد)در صورتی که وقتی به صورت تنها اجرا میکنم خروجی میگیرم.
    Image


    خروجی این کد به این صورت می باشد:
    Image


    من میخوام یک DiskInfo به انتهای لیستم اضافه بشه و چرا روی بعضی از سیستم ها MemoryMb نشون نمیده
    دوستان لطفا راهنمایی بفرمایید.

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

arrow