نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • برنامه ها
  • مدیریت گروه های تبلیغاتی با استفاده از PowerShell نحوه دریافت لیستی از گروه های تبلیغاتی منتخب که لیست بزرگی از کاربران عضو آن هستند

مدیریت گروه های تبلیغاتی با استفاده از PowerShell نحوه دریافت لیستی از گروه های تبلیغاتی منتخب که لیست بزرگی از کاربران عضو آن هستند

امروز سعی خواهیم کرد لیست همه کاربران را در یک فایل جداگانه از اکتیو دایرکتوری بارگیری کنیم. PowerShell دستیار اصلی ما در این زمینه خواهد بود. این به این دلیل است که مایکروسافت در ابتدا PowerShell Shell را به عنوان ابزار اصلی برای مدیریت اجزای سرور ویندوز برنامه ریزی کرده بود. و امروز، زمانی که نسخه 2.0 را داریم، به طور کلی، اینطور است.

حتی در گذشته نه چندان دور، برای اینکه به نحوی با AD تعامل داشته باشند، مدیران باید یا ابزار dsquery یا انواع اسکریپت ها یا ابزارهای کمکی را در اختیار داشته باشند. امروز، با شروع ویندوز سرور 2008 R2، می توانیم با AD از طریق PowerShell کار کنیم. با ظهور PowerShell 2.0، یک ماژول ویژه برای تعامل با Active Directory استفاده می شود ماژول اکتیو دایرکتوری برای Windows PowerShellکه شامل لیست مورد نیاز cmdlet ها می باشد. برای وظایف خود از دستور استفاده خواهیم کرد Get-ADUser.

بنابراین، بسته به اینکه کدام سیستم عامل کنسول PowerShell را اجرا کنیم، باید "مراحل آماده سازی" را انجام دهیم.

1) اگر از زیر ویندوز سرور کار کنیم تا نسخه 2012، سپس باید دستور را اجرا کنیم:

  • دایرکتوری فعال Import-Module - دستور برای وارد کردن یک ماژول به AD

برای نسخه های سیستم عامل از 2012 و بالاتر، این ماژول قبلاً به طور پیش فرض فعال است.

2) اگر ما از هر ویندوز کلاینت کار می کنیم، بسته مدیریت راه دور RSAT باید روی آن نصب شود و ماژول Active Directory برای Windows PowerShell نیز نصب شده باشد.

شایان ذکر است که cmdlet Get-ADUser توصیه می شود زمانی اجرا شود که میزان داده های بارگذاری شده تا 1000 کاربر باشد.

صادر کردن کاربران AD با استفاده از PowerShell به یک فایل جداگانه

ابتدا، اجازه دهید راهنمای دستور Get-ADUser را فراخوانی کنیم. در نتیجه، تمام دستورات لازم برای مدیریت بیشتر را دریافت خواهید کرد.

  • به Get-ADUser کمک کنید - دستور فراخوانی کمک

برای دریافت لیستی از همه کاربران با تمام ویژگی ها در یک پنجره PowerShell، دستور زیر را اجرا کنید:

  • Get-ADUser -filter * - صادرات لیست کاربران AD

این تخلیه کاملاً آموزنده نیست و همه اطلاعات لازم را در پنجره جا نمی دهد. بنابراین، بیایید سعی کنیم جستجو را محدود کنیم و ویژگی های یک کاربر خاص به نام user1 را نمایش دهیم:

  • Get-ADUser -identity user1 -properties * - صادرات خواص یک کاربر خاص

اکنون بیایید سعی کنیم لیست همه کاربران را با ویژگی های آنها به یک خارجی صادر کنیم. txt یا csvفایل:

  • Get-ADUser -filter * -properties * | Export-csv -path c: \ users.csv -encoding Unicode - صادرات کاربران به یک فایل جداگانه

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

هنگام مشاهده یک فایل، داده ها در یک خط صادر می شوند و بنابراین قابل خواندن نیستند. برای تغییر این مورد باید موارد زیر را انجام دهیم:

اسکریپت هایی برای تخلیه همه کاربران از MS Active Directory (ITGC)

ایوان پیسکونوف

یکی از روشهای استاندارد حسابرسی ITGC برای کاتالوگ اکتیو دایرکتوری دریافت دانلود همه کاربران دامنه است. بر اساس داده های دریافت شده، مراحل آزمایش تشکیل می شود، به عنوان مثال، مطالعه لیست مدیران یا شناسایی کاربران با رمز عبور منقضی شده. کارآمدترین راه برای تشکیل چنین تخلیه ای استفاده از رابط استاندارد است پاورشل ، نمونه هایی از آن را در این مقاله بررسی خواهیم کرد

1. آپلود سریع با استفاده از اسکریپت PowerShell

در زیر یک اسکریپت PowerShell به عنوان یکی از ساده‌ترین و سریع‌ترین راه‌ها برای دریافت لیستی از تمام کاربران دامنه AD در قالب CSV وجود دارد که می‌تواند بدون مشکل توسط همان اکسل باز شود.

$ objSearcher = New-Object System.DirectoryServices.DirectorySearcher $ objSearcher.SearchRoot = "LDAP: // ou = کاربران، ou = بخش ها، dc = تست، dc = ru" $ objSearcher.Filter = "(&y (شخص)C (! userAccountControl: 1.2.840.113556.1.4.803: = 2)) "$ users = $ objSearcher.FindAll () # تعداد حساب ها $ users. تعداد کاربران $ | ForEach-Object ($ user = $ _. Properties New-Object PsObject -Property @ (عنوان = $ user.description بخش = $ user.department ورود = $ user.userprincipalname تلفن = $ user.telephonenumber اتاق = $ user.physicaldeliveryofficename کامل نام = $ user.cn)) | Export-Csv -NoClobber -Encoding utf8 -Path C: list_domen_users.csv

برای اینکه اسکریپت روی سیستم شما کار کند، باید کمی آن را اصلاح کنید، یعنی پارامترهای لازم را وارد کنید، به عنوان مثال. همانطور که در این مثال اینها پارامترها هستند کاربران در واحد بخش ها در دامنه Test.ru. و همچنین مسیر محل ذخیره فایل را مشخص کنید list_domen_users.csv

پس از تخلیه، اگر بلافاصله باز کنید list_domen_users.csv ، به شکلی غیرقابل خواندن به نظر می رسد، با این حال، با ابزارهای استاندارد می توانیم به راحتی آن را به قالب مورد نیاز خود بیاوریم. باز کردن در اکسل list_domen_users.csv ، ستون اول را انتخاب کنید، سپس به تب "داده" بروید و روی "متن بر ستون" کلیک کنید. "Limited" را انتخاب کنید و روی "Next" کلیک کنید. آماده!

! باید توجه داشتکه این اسکریپت بیش از 1000 کاربر را نمایش نخواهد داد. برای یک شرکت کوچک کاملاً مناسب است، اما کسانی که تعداد زیادی کاربر در دامنه دارند باید از روش های توضیح داده شده در زیر استفاده کنند.

2. cmdlet پیشرفته PowerShell برای دریافت کاربران اکتیو دایرکتوری آفلود شده

ابزار Active Directory Module for Windows PowerShell (معرفی شده در Windows Server 2008 R2 به بعد) به شما امکان می دهد cmdlet هایی تولید کنید که دستکاری های مختلفی را با اشیاء دایرکتوری AD انجام می دهند. برای به دست آوردن اطلاعات در مورد کاربران و ویژگی های آنها، از cmdlet استفاده کنید Get-ADUser.

برای شروع یک پنجره Powershell راه اندازی کنید با حقوق سرپرست و وارد کردن ماژول Active Directory برای اقدامات بیشتر:
دایرکتوری فعال Import-Module

به لیست تمام حساب های دامنه a، بیایید دستور را اجرا کنیم:

Get-ADUser -filter *

به نمایش اطلاعات کامل در مورد تمام ویژگی های موجود user tuser، دستور را اجرا کنید

Get-ADUser -توسیپ هویتی -خواص *


به عنوان مثال، ما علاقه مند به اطلاعات در مورد تاریخ تغییر رمز عبور و زمان انقضای آن ... نتیجه اجرای دستور را می توان به یک فایل متنی صادر کرد:

Get-ADUser -filter * -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires | ft Name، PasswordExpired، PasswordLastSet، PasswordNeverExpires> C: tempusers.txt

یا بلافاصله در CSV آپلود کنید ، که در آینده به راحتی به اکسل صادر می شود (علاوه بر این، با استفاده از sort-object، جدول را بر اساس ستون PasswordLastSet مرتب می کنیم و همچنین شرطی را اضافه می کنیم که - نام کاربری باید شامل رشته "Dmitry" باشد)

Get-ADUser -filter * -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires | کجا ($ _. نام –مانند "* Dmitry *") | مرتب سازی شی PasswordLastSet | select-object Name، PasswordExpired، PasswordLastSet، PasswordNeverExpires | Export-csv -path c: tempuser-password-expires-2015.csv

در این مقاله نگاهی به قابلیت های PowerShell برای مدیریت گروه های دامنه اکتیو دایرکتوری خواهیم داشت. نحوه ایجاد یک گروه جدید در AD، افزودن کاربران به آن (یا حذف آن)، فهرست کاربران گروه، و چند ترفند گروه دامنه مفید دیگر که در مدیریت روزمره بسیار مفید هستند را توضیح خواهیم داد. cmdlet های اصلی زیر در Active Directory PowerShell Module برای مدیریت گروه های AD موجود هستند:

برای استفاده از این cmdlet ها در جلسه PowerShell خود، یک ماژول تعامل ویژه AD باید بارگذاری شود - ماژول اکتیو دایرکتوری برای Windows PowerShell... این ماژول اولین بار در ویندوز سرور 208 R2 معرفی شد. در ویندوز سرور 2012 به بعد، این ماژول به طور پیش فرض فعال است. در رایانه های مشتری، می توان آن را به عنوان یکی از اجزای RSAT نصب و فعال کرد. می توانید بررسی کنید که آیا ماژول به صورت زیر بارگذاری شده است:

Get-Module -Listavailable

همانطور که می بینید، ماژول ActiveDirectory بارگذاری شده است. اگر نه، آن را با دستور وارد کنید:

دایرکتوری فعال Import-Module

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

Get-Command -Module ActiveDirectory

147 cmdlet در ماژول موجود است که 11 عدد از آنها می توانند با گروه ها کار کنند.

Get-Command -Module ActiveDirectory -Name "* Group *"

در اینجا لیستی از آنها وجود دارد:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

با استفاده از دستور یک گروه جدید در اکتیو دایرکتوری کانتینر (OU) مشخص شده ایجاد کنید New-ADGroup:

New-ADGroup "TestADGroup" -path "OU = Groups, OU = Moscow, DC = corp, dc = winitpro, DC = ru" -GroupScope Global -PassThru –Verbose

با استفاده از ویژگی شرحمی توانید شرحی از گروه تنظیم کنید و از آن استفاده کنید DisplayNameنام نمایشی را تغییر دهید

پارامتر GroupScopeمی توانید یکی از انواع گروه های زیر را تنظیم کنید:

  • 0 = DomainLocal
  • 1 = جهانی
  • 2 = جهانی

شما می توانید یک گروه توزیع مانند زیر ایجاد کنید:

New-ADGroup "TestADGroup-Distr" - مسیر "OU = Groups, OU = Moscow, DC = corp, dc = winitpro, DC = ru" -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember - کاربران را به گروه AD اضافه کنید

با استفاده از Add- می توانید کاربران را به گروه Active Directory اضافه کنید. AdGroupMember... بیایید دو کاربر را به گروه جدید اضافه کنیم:

Add-AdGroupMember -Identity TestADGroup -Members user1, user2

اگر لیست کاربرانی که باید به یک گروه اضافه شوند نسبتاً بزرگ است، می‌توانید فهرست حساب‌ها را در یک فایل CSV ذخیره کنید، سپس این فایل را وارد کنید و هر کاربر را به گروه اضافه کنید.

فرمت فایل CSV به شرح زیر است (لیست کاربران، یک نفر در هر خط، نام ستون کاربران است)

Import-CSV. \ Users.csv -Header users | ForEach-Object (Add-AdGroupMember -Identity 'TestADGroup' -embers $ _. Users)

برای دریافت تمام اعضای یک گروه (groupA) و اضافه کردن آنها به گروه دیگر (groupB)، از این دستور استفاده کنید:

Get-ADGroupMember "GroupA" | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity "Group-B" -Members $ _)

در صورت نیاز به کپی کردن اعضای همه گروه های تو در تو در یک گروه جدید (به صورت بازگشتی)، باید از دستور زیر استفاده کنید:

Get-ADGroupMember -Identity "GroupA" -Recursive | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity "GroupB" -Members $ _)

Remove-ADGroupMember - حذف کاربران از یک گروه

برای حذف کاربران از یک گروه AD، از دستور Remove-ADGroupMember استفاده کنید. بیایید دو کاربر را از گروه حذف کنیم:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

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

اگر می خواهید کاربران را از یک گروه طبق لیست از یک فایل CSV حذف کنید، از دستور زیر استفاده کنید:

Import-CSV. \ Users.csv -Header users | ForEach-Object (Remove-ADGroupMember -Identity ‘TestADGroup’ - Members $ _. Users)

Get-ADGroup - اطلاعاتی در مورد یک گروه AD دریافت کنید

cmdlet به شما کمک می کند اطلاعاتی در مورد گروه بدست آورید. Get-ADGroup:

Get-ADGroup "TestADGroup"

این دستور اطلاعات مربوط به ویژگی های اصلی گروه (DN، نوع گروه، نام، SID) را نمایش می دهد. برای نمایش مقدار تمام ویژگی های یک گروه دامنه AD، دستور زیر را اجرا کنید:

Get-ADGroup "TestADGroup" -properties *

همانطور که می بینید اکنون ویژگی هایی مانند زمان ایجاد و اصلاح گروه، توضیحات و ... نمایش داده می شوند.

با استفاده از cmdlet Get-ADGroup، می توانید تمام گروه هایی که به آنها علاقه دارید را با یک الگوی خاص پیدا کنید. به عنوان مثال، شما باید تمام گروه های AD را که حاوی عبارت هستند پیدا کنید مدیران :

Get-ADGroup -LDAPFilter "(name = * admins *)" | قالب-جدول

Get-ADGroupMember - فهرست کاربران یک گروه AD

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

Get-ADGroupMember "TestADGroup"

برای اینکه فقط نام کاربری در نتایج باقی بماند، اجرا کنید:

Get-ADGroupMember "TestADGroup" | نام فوت

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

Get-ADGroupMember 'server-admins "-recursive | ft name

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

Get-ADGroupMember 'server-admins "-recursive | ft samaccountname | Out-File c: \ ps \ admins.csv

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

Get-ADGroupMember -Identity 'server-admins' -recursive | foreach (Get-ADUser $ _ -properties title، OfficePhone | Select-Object title، OfficePhone)

(Get-ADGroupMember -Identity "Domain Admins").

مشخص شد که ما 7 حساب کاربری در گروه "مدیران دامنه" داریم.

برای یافتن لیستی از گروه های خالی در یک OU خاص، از این دستور استفاده کنید:

Get-ADGroup -Filter * -Properties Members -Searchbase "OU = Moscow, DC = corp, dc = winitpro, DC = ru" | جایی که (-نه $ _. اعضا) | نام را انتخاب کنید

0

من اسکریپت کاری زیر را دارم که بررسی می کند آیا لیست بزرگی از کاربران در یک فایل CSV عضو یک گروه AD هستند یا خیر و نتایج را در results.csv می نویسد.

مطمئن نیستم چگونه اسکریپت را تبدیل کنم تا بتوانم $ group = "InfraLite" را به $ group = DC تغییر دهم. \ List_Of_AD_Groups.CSV.

بنابراین، اسکریپت فقط منطبقات را برای یک گروه AD برمی‌گرداند، بلکه مطابقت‌ها را برای 80 گروه AD موجود در List_of_AD_groups.csv برمی‌گرداند. نوشتن YES / NO برای هر گروه AD در یک ستون CSV جدید (یا در صورت عدم امکان، ایجاد یک فایل CSV جداگانه برای هر گروه با نتایج نیز انجام می شود.

من می توانستم با تغییر مقدار از گروه $ و نام فایل صادراتی و اجرای مجدد اسکریپت 80 بار این کار را به صورت دستی انجام دهم، اما برای انجام این کار باید با PS سریع عمل می کردم.

به عنوان مثال results.csv؟:

NAME AD_GROUP1 AD_GROUP2 AD_GROUP80 و غیره user1 بله نه بله user2 نه نه بله user3 نه بله نه اکو "UserName`InfraLite" >> results.csv $ users = GC. \ user_list.csv $ group = "InfraLite" $ اعضا = Get-ADGroupMember -Identity $ group -Recursive | -ExpandProperty SAMAccountName foreach ($ user در $ users) (اگر ($ Member - حاوی $ user) (پژواک "$ user $ group`tYes" >> results.csv) را انتخاب کنید (echo "$ user`tNo" >> نتایج csv.))

  • 2 پاسخ
  • مرتب سازی:

    فعالیت

0

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

$ group = Get-Content "C: \ groups.txt" foreach ($ group در $ group) ($ Member = Get-ADGroupMember ... ...)

یک رویکرد تمیزتر ایجاد یک الگوی نقشه‌برداری گروهی، شبیه‌سازی آن برای هر کاربر و پر کردن یک کپی با عضویت‌های گروهی کاربر است. چیزی شبیه به این باید کار کند:

الگوی $ = @ () Get-Content "C: \ group.txt" | ForEach-Object ($ template [$ _] = $ false) $ group = @ () Get-ADGroup -Filter * | ForEach-Object ($ group [$ _. DistinguishedName] = $ _. Name) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ($ groupmap = $ template.Clone () $ _. MemberOf | ForEach-Object ($ group [$ _]) | Where-Object ($ groupmap.ContainsKey ($ _)) | ForEach-Object ($ groupmap [$ _] = $ true) New-Object -Type PSObject -Property $ groupmap) | Export-Csv "C: \ user_group_mapping.csv" -NoType

0

من مدتی است که با این کار بازی می کنم و فکر می کنم راهی پیدا کردم که دقیقاً همان چیزی را که دنبالش بودید به شما برسانم.

فکر می کنم انسگر در مسیر درستی قرار داشت، اما نتوانستم کاری را که بعد از آن انجام داد، انجام دهد. وی اشاره کرد که در زمان نگارش این مقاله به محیط AD دسترسی نداشته است.

این چیزی است که من به آن رسیدم:

$ UserArray = Get-Content "C: \ Temp \ Users.txt" $ GroupArray = Get-Content "C: \ Temp \ Groups.txt" $ OutputFile = "C: \ Temp \ Something.csv" # راه‌اندازی hashtable برای استفاده بعدی $ UserHash = New-Object -TypeName System.Collections.Hashtable # حلقه بیرونی برای افزودن کاربران و عضویت به UserHash $ UserArray | ForEach-Object ($ UserInfo = Get-ADUser $ _ -Properties MemberOf # دستور LPAP را فقط به SAMAccountName گروه $ Memberships = $ UserInfo.MemberOf | ForEach-Object (($ _. Split (")) می کند. .replace ("CN ="، "")) #افزودن کاربر = جفت عضویت به Hash $ UserHash.Add ($ _, $ Memberships)) # حلقه بیرونی برای ایجاد یک شی به ازای هر کاربر $ نتایج = $ UserArray | ForEach-Object (# ابتدا یک شی ساده ایجاد کنید $ User = New-Object -TypeName PSCustomObject -Property @ (Name = $ _) # به صورت پویا اعضا را به شی اضافه کنید، بر اساس $ GroupArray $ GroupArray | ForEach-Object (#Checking $ UserHash برای دیدن اینکه آیا گروه در لیست عضویت کاربر نشان داده می شود $ UserIsMember = $ UserHash. ($ User.Name) - حاوی $ _ #افزودن ویژگی به شی، و مقدار $ User | Add-Member -MemberType NoteProperty -Name $ _ -Value $ UserIsMember) #برگرداندن شی به متغیر Return $ User) #اشیاء را به یک CSV تبدیل کنید، سپس آنها را خروجی کنید $ Results | ConvertTo-CSV -NoTypeInformation | Out-File $ OutputFile

بیایید امیدوار باشیم که همه چیز منطقی باشد. تا جایی که تونستم نظر دادم. اگر RSAT را روی هر دستگاهی که آن را اجرا می کنید نصب نکرده باشید، تبدیل به ADSI بسیار آسان خواهد بود. اگر به آن نیاز دارید، به من اطلاع دهید و من تغییراتی سریع ایجاد خواهم کرد.

بر کسی پوشیده نیست که از زمان اولین نسخه PowerShell، مایکروسافت سعی کرده آن را به ابزار اصلی مدیریت ویندوز تبدیل کند. و از بسیاری جهات کار می کند! امروز با مثال‌های ساده، قابلیت‌های PowerShell را به شما نشان می‌دهیم که می‌توانید از آن‌ها برای دریافت اطلاعات مختلف در مورد کاربران اکتیو دایرکتوری و ویژگی‌های آن‌ها استفاده کنید.

توجه داشته باشید... پیش از این، برای به دست آوردن اطلاعات در مورد ویژگی های حساب های کاربری AD، باید از ابزارهای مختلفی استفاده می کرد: کنسول ADUC (از جمله)، ابزار و غیره. انتخاب ابزار معمولا بر اساس وظیفه و توانایی برنامه نویسی مدیر بود.

PowerShell 2.0 یک ماژول ویژه برای کار با Active Directory - (معرفی شده در Windows Server 2008 R2) معرفی می کند که cmdlet های آن به شما امکان می دهند دستکاری های مختلفی را با اشیاء موجود در فهرست AD انجام دهید. برای به دست آوردن اطلاعات در مورد کاربران دامنه اکتیو دایرکتوری و ویژگی های آنها، از cmdlet استفاده کنید Get-ADUser... می توانید از cmdlet Get-ADUser برای بدست آوردن مقدار هر ویژگی یک حساب کاربری موجود در AD استفاده کنید. علاوه بر این، می توانید معیارهای انتخاب مختلفی را مشخص کنید و لیستی از کاربران دامنه و ویژگی های آنها را ایجاد کنید.

در این مثال، نحوه استفاده از Get-ADUser PowerShell cmdlet را به شما نشان خواهیم داد تا اطلاعاتی در مورد آخرین بار تغییر رمز عبور کاربر و زمان منقضی شدن آن به دست آورید.

پنجره Powershll را با حقوق مدیر اجرا کنید و ماژول Active Directory را با دستور وارد کنید:

دایرکتوری فعال Import-Module

مشاوره... در ویندوز سرور 2012 و بالاتر، این مورد را می توان نادیده گرفت، زیرا ماژول Active Directory PowerShell به طور پیش فرض فعال است.

در سیستم عامل های کلاینت (در همان ویندوز 10) برای اینکه فرمانده Get-AdUser کار کند، باید نسخه مناسب RSAT را نصب کرده و مؤلفه را در کنترل پنل فعال کنید. ماژول اکتیو دایرکتوری برای Windows PowerShell(Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> AD DS Tools).

شما می توانید لیست کاملی از همه آرگومان های cmdlet Get-ADUser را به صورت زیر دریافت کنید:

به Get-ADUser کمک کنید

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

Get-ADUser -filter *

قالب لیست برگشتی برای استفاده چندان راحت نیست، فقط برخی از 10 پایه از بیش از 120 ویژگی و ویژگی حساب های کاربری (DN، SamAccountName، Name، UPN، و غیره) نمایش داده می شود؛ علاوه بر این، می بینیم که وجود دارد. هیچ اطلاعاتی در مورد زمان آخرین تغییر رمز عبور ...

برای نمایش اطلاعات کامل در مورد تمام ویژگی های موجود در کاربر، دستور را اجرا کنید:

Get-ADUser -توسیپ هویتی -خواص *

بنابراین، ما یک لیست کامل از ویژگی های کاربر AD و مقادیر آنها مرتبط با حساب کاربری را می بینیم. سپس به فرمت کردن خروجی cmdlet Get-ADUser می رویم تا فیلدهای مورد نظر ما نمایش داده شوند. ما به ویژگی ها علاقه مندیم:

  • رمز عبور منقضی شده است
  • PasswordLastSet
  • PasswordNever Expires

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

Get-ADUser tuser -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires

اکنون اطلاعات کاربر حاوی اطلاعاتی در مورد تاریخ تغییر رمز عبور و زمان انقضای آن است. بیایید اطلاعات را به شکل جدولی راحت‌تر ارائه کنیم:

Get-ADUser -filter * -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires | ft Name، Password Expired، PasswordLastSet، PasswordNeverExpires

برای نمایش داده های کاربر از یک OU خاص، از پارامتر استفاده می کنیم SearchBase:

Get-ADUser -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name، Password Expired، PasswordLastSet، PasswordNeverExpires

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

Get-ADUser -filter * -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires | ft Name، PasswordExpired، PasswordLastSet، PasswordNeverExpires> C: \ temp \ users.txt

یا در CSV، که در آینده برای صادرات به اکسل راحت خواهد بود (علاوه بر این، با استفاده از مرتب کردن شیجدول را بر اساس ستون PasswordLastSet مرتب کنید و یک شرط نیز اضافه کنید جایی که- نام کاربری باید حاوی خط "دیمیتری" باشد):

Get-ADUser -filter * -properties PasswordExpired، PasswordLastSet، PasswordNeverExpires | کجا ($ _. نام –مانند "* Dmitry *") | مرتب سازی شی PasswordLastSet | select-object Name، PasswordExpired، PasswordLastSet، PasswordNeverExpires | Export-csv -path c: \ temp \ user-password-expires-2015.csv

بنابراین، می توانید یک جدول با هر ویژگی کاربر Active Directory مورد نیاز بسازید.

پارامتر –Filter برای دریافت لیستی از حساب های کاربری AD بر اساس یک معیار خاص استفاده می شود. به عنوان آرگومان های این پارامتر، می توانید مقدار ویژگی های خاص کاربران اکتیو دایرکتوری را مشخص کنید، در نتیجه cmdlet Get-ADUser برای کاربرانی که با معیارهای فیلتر مطابقت دارند اعمال می شود.

نمایش کاربران AD که نام آنها با Roman شروع می شود:

فیلتر Get-ADUser (نام مانند "Roman *")

Get-ADUser -Filter (SamAccountName -مانند "*") | Measure-Object

لیست تمام حساب های فعال (بلاک نشده) در AD:

Get-ADUser -Filter (Enabled -eq "True") | Select-Object SamAccountName، Name، نام خانوادگی، GivenName | قالب-جدول

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

Get-ADUser -filter (Enabled -eq $ True) -properties password Expired | کجا ($ _. Password Expired)

لیست حساب های فعال با آدرس پستی:

Get-ADUser -Filter ((mail -ne "null") -and (Enabled -eq "true")) -Properties نام خانوادگی، GivenName، ایمیل | انتخاب نام شیء، نام خانوادگی، نام داده شده، ایمیل | قالب-جدول

وظیفه: برای لیستی از حساب هایی که در یک فایل متنی ذخیره می شوند (یک حساب در هر خط)، باید شماره تلفن کاربر را در AD دریافت کنید و اطلاعات را در یک فایل csv متنی آپلود کنید (به راحتی می توانید آن را به Esxel وارد کنید).

Import-Csv c: \ ps \ usernsme_list.csv | ForEach (Get-ADUser -identity $ _. User -Properties Name، phoneNumber | انتخاب نام، phonenumber | Export-CSV c: \ ps \ export_ad_list.csv -Append -Encoding UTF8)

مثال زیر به شما امکان می دهد یک دفترچه آدرس شرکت را به عنوان یک فایل csv آپلود کنید، که بعداً می توانید آن را به Outlook یا Mozilla Thunderbird وارد کنید:

Get-ADUser -Filter ((mail -ne "null") -and (Enabled -eq "true")) -Properties نام خانوادگی، GivenName، ایمیل | انتخاب نام شیء، نام خانوادگی، نام داده شده، ایمیل | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $ env: temp \ mail_list.csv

کاربرانی که در 90 روز گذشته رمز عبور خود را تغییر نداده اند:

$90_Days = (Get-Date) .adddays (-90) Get-ADUser -filter ((passwordlastset -le $90_days))

$ user = Get-ADUser winadmin -Properties thumbnailPhoto $ user.thumbnailPhoto | Set-Content winadmin.jpg -بایت رمزگذاری

لیست گروه هایی که حساب کاربری در آنها قرار دارد

Get-AdUser winadmin -Properties Memberof | Memberof -expandproperty Memberof را انتخاب کنید

مقالات مرتبط برتر