Powershell რეკლამის აქტიური მომხმარებლების სია. როგორ მივიღოთ შერჩეული AD ჯგუფების სია, რომელთა წევრებიც არიან მომხმარებლების დიდი სია? მოითხოვეთ კოდი სპოილერის ქვეშ

დღეს ჩვენ შევეცდებით ჩამოვტვირთოთ ყველა მომხმარებლის სია ცალკე ფაილში Active Directory-დან. ჩვენი მთავარი ასისტენტი ამ საკითხში იქნება PowerShell. საქმე ის არის, რომ მაიკროსოფტმა თავდაპირველად დაგეგმა PowerShell ბრძანების კონსოლი, როგორც Windows სერვერის კომპონენტების მართვის მთავარი ინსტრუმენტი. და დღეს, როდესაც უკვე გვაქვს ვერსია 2.0, ზოგადად, ასეა.

ახლო წარსულშიც კი, AD-თან როგორმე ურთიერთობისთვის, ადმინისტრატორებს სჭირდებოდათ ჰქონოდათ dsquery უტილიტა ან სხვადასხვა სახის სკრიპტები ან უტილიტები. დღეს, Windows Server 2008 R2-ით დაწყებული, ჩვენ შეგვიძლია ვიმუშაოთ AD-თან PowerShell-ის საშუალებით. PowerShell 2.0-ის მოსვლასთან ერთად, სპეციალური მოდული გამოიყენება Active Directory-თან ურთიერთობისთვის Active Directory მოდული Windows PowerShell-ისთვის, რომელიც შეიცავს cmdlet-ების აუცილებელ სიას. ჩვენი ამოცანებისთვის ჩვენ გამოვიყენებთ ბრძანებას მიიღეთ-ADUser.

ასე რომ, იმისდა მიხედვით, თუ რომელ ოპერაციულ სისტემაში ვიმუშავებთ PowerShell-ის კონსოლზე, დაგვჭირდება „მოსამზადებელი ნაბიჯების“ შესრულება.

1) თუ ჩვენ ვმუშაობთ Windows Server-ის ქვეშ 2012 ვერსიამდე, მაშინ ჩვენ უნდა გაუშვათ ბრძანება:

  • იმპორტი-მოდულის აქტიური დირექტორია – ბრძანება მოდულის იმპორტისთვის AD-ში

ოპერაციული სისტემის ვერსიებისთვის 2012 და უფრო მაღალი, ეს მოდული უკვე ჩართულია ნაგულისხმევად.

2) თუ ჩვენ ვმუშაობთ Windows-ის რომელიმე კლიენტიდან, მაშინ მასზე უნდა იყოს დაინსტალირებული RSAT დისტანციური ადმინისტრირების პაკეტი, რომელშიც დაინსტალირებულია Active Directory Module for Windows PowerShell კომპონენტი.

აღსანიშნავია, რომ Get-ADUser cmdlet რეკომენდირებულია შესრულდეს, როდესაც ატვირთული მონაცემების რაოდენობა 1000-მდე მომხმარებელია.

AD მომხმარებლების ექსპორტი PowerShell-ის გამოყენებით ცალკე ფაილში

პირველი, მოდით მოვუწოდებთ დახმარებას Get-ADUser ბრძანებისთვის. შედეგად, თქვენ მიიღებთ ყველა საჭირო ბრძანებას შემდგომი ადმინისტრირებისთვის.

  • დაეხმარეთ Get-ADUser-ს – დახმარების გამოძახების ბრძანება

PowerShell ფანჯარაში ყველა მომხმარებლის ყველა თვისების სიის მისაღებად, თქვენ უნდა შეასრულოთ შემდეგი ბრძანება:

  • Get-ADUser -ფილტრი * - AD მომხმარებლების სიის ექსპორტი

ეს ატვირთვა არ არის მთლიანად ინფორმაციული და არ ჯდება ყველა საჭირო ინფორმაცია ფანჯარაში. ამიტომ, შევეცადოთ შევამციროთ ძებნა და გამოვაჩინოთ კონკრეტული მომხმარებლის, სახელად user1, თვისებები:

  • Get-ADUser -identity user1 -თვისებები * - კონკრეტული მომხმარებლის თვისებების ექსპორტი

ახლა ვცადოთ ყველა მომხმარებლის სიის ექსპორტი მათი თვისებებით გარედან txt ან csvფაილი:

  • Get-ADUser -ფილტრი * -თვისებები * | Export-csv -გზა c:\users.csv -კოდირების Unicode - მომხმარებლების ექსპორტი ცალკე ფაილში

განსაკუთრებული ყურადღება მინდა მივაქციო გასაღებს - უნიკოდის კოდირება. ის ემსახურება იმის უზრუნველსაყოფად, რომ რუსული კირიული ანბანი, AD-დან ექსპორტის შემდეგ, შეიძლება სწორად იყოს ნაჩვენები ატვირთულ ფაილში. მაგალითად, Microsoft Excel-ის საშუალებით რუსული ასოების ნაცვლად დავინახავთ კითხვის ნიშნებს.

ფაილის ნახვისას მონაცემები ექსპორტირებულია ერთ ხაზზე და, შესაბამისად, არ იკითხება. ამის შესაცვლელად ჩვენ უნდა გავაკეთოთ შემდეგი:

ეძღვნება PowerShell-ის გამოყენებას AD-ის ადმინისტრირებისთვის. როგორც საწყისი წერტილი, ავტორმა გადაწყვიტა აეღო 10 საერთო AD ადმინისტრირების დავალება და ენახა, როგორ შეიძლება მათი გამარტივება PowerShell-ის გამოყენებით:

  1. მომხმარებლის პაროლის გადატვირთვა
  2. გააქტიურეთ და გამორთეთ ანგარიშები
  3. განბლოკეთ მომხმარებლის ანგარიში
  4. წაშალე შენი ანგარიში
  5. იპოვნეთ ცარიელი ჯგუფები
  6. დაამატეთ მომხმარებლები ჯგუფში
  7. ჩამოთვალეთ ჯგუფის წევრები
  8. იპოვნეთ მოძველებული კომპიუტერის ანგარიშები
  9. გამორთეთ კომპიუტერის ანგარიში
  10. იპოვნეთ კომპიუტერები ტიპის მიხედვით

გარდა ამისა, ავტორი ინახავს ბლოგს (რა თქმა უნდა, PowerShell-ის გამოყენებით), გირჩევთ გადახედოთ - jdhitsolutions.com/blog. და თქვენ შეგიძლიათ მიიღოთ ყველაზე განახლებული ინფორმაცია მისი Twitter-დან twitter.com/jeffhicks.
ასე რომ, ქვემოთ მოცემულია სტატიის თარგმანი „Active Directory–ის ტოპ 10 ამოცანები გადაჭრილი PowerShell–ით“.

Windows PowerShell-ის გამოყენებით Active Directory-ის (AD) მართვა უფრო ადვილია, ვიდრე თქვენ გგონიათ და მინდა დაგიმტკიცოთ ეს. თქვენ შეგიძლიათ უბრალოდ აიღოთ ქვემოთ მოცემული სკრიპტები და გამოიყენოთ ისინი AD მართვის მრავალი ამოცანის გადასაჭრელად.

მოთხოვნები

იმისათვის, რომ გამოიყენოთ PowerShell AD-ის სამართავად, თქვენ უნდა აკმაყოფილებდეთ რამდენიმე მოთხოვნას. მე ვაპირებ იმის დემონსტრირებას, თუ როგორ მუშაობს AD cmdlet-ები Windows 7 კომპიუტერის გამოყენებით, როგორც მაგალითი.
cmdlet-ების გამოსაყენებლად, თქვენ უნდა გქონდეთ Windows Server 2008 R2 დომენის კონტროლერი, ან შეგიძლიათ ჩამოტვირთოთ და დააინსტალიროთ Active Directory Management Gateway Service ძველ DC-ებზე. გთხოვთ, ინსტალაციამდე ყურადღებით წაიკითხოთ დოკუმენტაცია; საჭიროა CD გადატვირთვა.
კლიენტის მხარეს, ჩამოტვირთეთ და დააინსტალირეთ (RSAT) Windows 7 ან Windows 8-ისთვის. Windows 7-ზე დაგჭირდებათ გახსნა მართვის პანელებითავი პროგრამებიდა აირჩიე ჩართეთ ან გამორთეთ Windows-ის ფუნქციები. იპოვე დისტანციური სერვერის ადმინისტრირების ინსტრუმენტებიდა გააფართოვეთ განყოფილება როლების ადმინისტრირების ინსტრუმენტები. აირჩიეთ შესაბამისი ელემენტები AD DS და AD LDS Tools-ისთვის, განსაკუთრებით გაითვალისწინეთ, რომ ელემენტი უნდა იყოს არჩეული Active Directory მოდული Windows PowerShell-ისთვის, როგორც ნაჩვენებია სურათზე 1. (Windows 8-ში ყველა ინსტრუმენტი არჩეულია ნაგულისხმევად). ახლა ჩვენ მზად ვართ სამუშაოდ.

ნახ.1 AD DS და AD LDS Tools-ის ჩართვა

მე შესული ვარ ანგარიშით დომენის ადმინისტრატორის უფლებებით. მე გაჩვენებთ cmdlet-ების უმეტესობა საშუალებას მოგცემთ მიუთითოთ ალტერნატიული სერთიფიკატები. ნებისმიერ შემთხვევაში, გირჩევთ წაიკითხოთ დახმარება ( Დახმარების მიღება) და მაგალითებს, რომლებსაც ქვემოთ გაჩვენებთ.
დაიწყეთ PowerShell-ის სესია და შემოიტანეთ მოდული:

PS C:\> Import-Module ActiveDirectory

იმპორტი ქმნის ახალ PSDrive-ს, მაგრამ ჩვენ არ გამოვიყენებთ მას. თუმცა, თქვენ ხედავთ, რა ბრძანებებია ხელმისაწვდომი იმპორტირებულ მოდულში.

PS C:\> get-command -module ActiveDirectory

ამ ბრძანებების სილამაზე ისაა, რომ თუ მე შემიძლია გამოვიყენო ბრძანება ერთ AD ობიექტზე, მაშინ ის შეიძლება გამოვიყენო 10, 100 და 1000-ზეც კი. ვნახოთ, როგორ მუშაობს ამ cmdlet-ებიდან ზოგიერთი.

ამოცანა 1: გადააყენეთ მომხმარებლის პაროლი

დავიწყოთ ტიპიური დავალებით: მომხმარებლის პაროლის გადატვირთვა. ამის გაკეთება მარტივად და მარტივად შეგიძლიათ cmdlet-ის გამოყენებით Set-ADAccountPassword. რთული ნაწილი ის არის, რომ ახალი პაროლი უნდა იყოს კვალიფიცირებული, როგორც დაცული სტრიქონი: ტექსტის ნაწილი, რომელიც დაშიფრულია და ინახება მეხსიერებაში PowerShell სესიის ხანგრძლივობის განმავლობაში. პირველი, მოდით შევქმნათ ცვლადი ახალი პაროლით:
PS C:\> $new=Read-Host "შეიყვანეთ ახალი პაროლი" -AsSecureString

შემდეგ შეიყვანეთ ახალი პაროლი:

ახლა ჩვენ შეგვიძლია ამოვიწეროთ ანგარიში (გამოყენებით samAccountname– საუკეთესო ვარიანტი) და დააყენეთ ახალი პაროლი. აქ არის მაგალითი მომხმარებლის ჯეკ ფროსტისთვის:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

სამწუხაროდ, ამ cmdlet-ში არის შეცდომა: -პასტრუ, -Რა იქნება თუ, და -დაადასტურეთარ მუშაობს. თუ გსურთ მალსახმობი, სცადეთ ეს:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -სტრიქონი "P@ssw0rd1z3" -ძალა)

შედეგად, მე მჭირდება ჯეკმა შეცვალოს პაროლი მომდევნო შესვლისას, ამიტომ მე შევცვლი ანგარიშს Set-ADUser.

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

cmdlet-ის გაშვების შედეგები არ იწერება კონსოლზე. თუ ეს უნდა გაკეთდეს, გამოიყენეთ -მართალია. მაგრამ მე შემიძლია გავარკვიო ოპერაცია წარმატებული იყო თუ არა მომხმარებლის სახელის ამოღებით cmdlet-ის გამოყენებით მიიღეთ-ADUserდა საკუთრების დაზუსტება პაროლს ვადა გაუვიდა, როგორც ნაჩვენებია სურათზე 2.


ბრინჯი. 2. Get-ADUser Cmdlet-ის შედეგები PasswordExpired თვისებით

დედააზრი: მომხმარებლის პაროლის გადაყენება PowerShell-ის გამოყენებით სულაც არ არის რთული. ვაღიარებ, რომ პაროლის გადატვირთვა ასევე მარტივია სნეპის საშუალებით Active Directory მომხმარებლები და კომპიუტერებიკონსოლები Microsoft Management Console (MMC).მაგრამ PowerShell-ის გამოყენება მიზანშეწონილია, თუ საჭიროა დავალების დელეგირება, არ გსურთ ზემოაღნიშნული სნეპ-ინის განთავსება ან პაროლის გადატვირთვა, როგორც დიდი ავტომატური IT პროცესის ნაწილი.

ამოცანა 2: გააქტიურეთ და გამორთეთ ანგარიშები

ახლა მოდით გამორთოთ ანგარიში. გავაგრძელოთ მუშაობა ჯეკ ფროსტთან. ეს კოდი იყენებს პარამეტრს -Რა იქნება თუ, რომელიც შეგიძლიათ იპოვოთ სხვა კომადლეტებში, რომლებიც ცვლიან ცვლილებებს ჩემი ბრძანების შესამოწმებლად მისი გაშვების გარეშე.

PS C:\> Disable-ADAccount jfrost -whatif რა მოხდება, თუ: ოპერაცია "Set"-ის შესრულება სამიზნეზე "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

ახლა მოდით გამორთოთ ის რეალურად:

PS C:\> Disable-ADAAaccount jfrost

და როცა ანგარიშის გააქტიურების დრო მოვა, რომელი cmdlet დაგვეხმარება?

PS C:\> Enable-ADAccount jfrost

ამ cmdlet-ების გამოყენება შესაძლებელია მილსადენის სახით, რაც საშუალებას გაძლევთ გაააქტიუროთ ან გამორთოთ იმდენი ანგარიში, რამდენიც გსურთ. მაგალითად, ეს კოდი გამორთავს ყველა ანგარიშს გაყიდვების განყოფილებაში

PS C:\> get-aduser -filter "department -eq "sales"" | გათიშვა-adaccount

რა თქმა უნდა, დაწერეთ ფილტრი მიიღეთ-ADUserსაკმაოდ რთული, მაგრამ ეს არის პარამეტრის გამოყენება -Რა იქნება თუ cmdlet-თან ერთად გათიშვა-ADAccountმოდის სამაშველოში.

ამოცანა 3: განბლოკეთ მომხმარებლის ანგარიში

განვიხილოთ სიტუაცია, როდესაც ჯეკმა დაბლოკა თავისი ანგარიში ახალი პაროლის შეყვანის მცდელობისას. იმის ნაცვლად, რომ შეეცადოთ იპოვოთ მისი ანგარიში GUI-ს საშუალებით, განბლოკვის პროცედურა შეიძლება გაკეთდეს მარტივი ბრძანების გამოყენებით.

PS C:\> განბლოკვა-ADAA ანგარიში jfrost

cmdlet ასევე მხარს უჭერს პარამეტრებს -Რა იქნება თუდა -დაადასტურეთ.

ამოცანა 4: ანგარიშის წაშლა

არ აქვს მნიშვნელობა რამდენ მომხმარებელს წაშლით - ეს მარტივია cmdlet-ის გამოყენებით ამოღება-ADUser. ჯეკ ფროსტის ამოღება არ მინდა, მაგრამ თუ მსურს, ასეთ კოდს გამოვიყენებ:

PS C:\> Remove-ADUser jfrost -whatif რა მოხდება, თუ: ოპერაციის "Remove" შესრულება სამიზნეზე "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

ან შემიძლია შევიყვანო რამდენიმე მომხმარებელი და წავშალო ისინი ერთი მარტივი ბრძანებით:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where ($_.WhenCanged -le (Get-Date).AddDays(-180)) | Remove-ADuser -whatif

ეს ბრძანება იპოვის და წაშლის გამორთული თანამშრომლების OU ანგარიშებს, რომლებიც არ შეცვლილა 180 დღის ან მეტი ხნის განმავლობაში.

ამოცანა 5: ცარიელი ჯგუფების პოვნა

ჯგუფების მართვა გაუთავებელი და მადლიერი ამოცანაა. ცარიელი ჯგუფების პოვნის მრავალი გზა არსებობს. ზოგიერთი გამოთქმა შეიძლება სხვებზე უკეთ იმუშაოს, ეს დამოკიდებულია თქვენს ორგანიზაციაზე. ქვემოთ მოცემული კოდი იპოვის დომენის ყველა ჯგუფს, მათ შორის ჩაშენებულებს.

PS C:\> get-adgroup -filter * | where (-არა ($_ | მიიღეთ-adgroupmember)) | აირჩიეთ სახელი

თუ თქვენ გაქვთ ჯგუფები ასობით წევრით, მაშინ ამ ბრძანების გამოყენებას შეიძლება დიდი დრო დასჭირდეს; Get-ADGroupMemberამოწმებს თითოეულ ჯგუფს. თუ შეგიძლია შეზღუდო ან მორგება უკეთესი იქნება.
აქ არის კიდევ ერთი მიდგომა:

PS C:\> get-adgroup -filter "წევრები -არამსგავსი "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=თანამშრომლები,DC=Globomantics, DC=local" | აირჩიეთ სახელი, ჯგუფი*

ეს ბრძანება პოულობს ყველა უნივერსალურ ჯგუფს, რომელსაც არ აქვს წევრობა OU ჯგუფებში და აჩვენებს ზოგიერთ თვისებას. შედეგი ნაჩვენებია სურათზე 3.


ბრინჯი. 3. მოძებნეთ და გაფილტრეთ უნივერსალური ჯგუფები

დავალება 6: მომხმარებლების დამატება ჯგუფში

მოდით დავამატოთ ჯეკ ფროსტი ჩიკაგოს IT ჯგუფს:

PS C:\> ad-adgroupmember "chicago IT" - წევრები jfrost

დიახ, ეს ასე მარტივია. თქვენ ასევე შეგიძლიათ მარტივად დაამატოთ ასობით მომხმარებელი ჯგუფებში, თუმცა მე ეს ცოტა უხერხულად მიმაჩნია:

PS C:\> Add-ADGroupMember "Chicago Employees" -წევრი (get-aduser -filter "city -eq "Chicago"")

მე გამოვიყენე ფრჩხილებში ჩასმული გამოთქმა ყველა მომხმარებლის მოსაძებნად, ვისაც აქვს ქალაქი ჩიკაგოში. ფრჩხილებში ჩასმული კოდი სრულდება და მიღებული ობიექტები გადაეცემა –Member პარამეტრს. თითოეული მომხმარებლის ობიექტი ემატება ჩიკაგოს თანამშრომლების ჯგუფს. არ აქვს მნიშვნელობა 5 თუ 5000 მომხმარებელთან გვაქვს საქმე, ჯგუფის წევრობების განახლებას სულ რამდენიმე წამი სჭირდება. ეს გამოთქმა ასევე შეიძლება დაიწეროს გამოყენებით ForEach-Objectრა შეიძლება იყოს უფრო მოსახერხებელი:

PS C:\> Get-ADUser -ფილტრი "city -eq "Chicago"" | foreach (Add-ADGroupMember "Chicago Employees" - წევრი $_)

დავალება 7: ჩამოთვალეთ ჯგუფის წევრები

შეიძლება გსურდეთ იცოდეთ ვინ არის გარკვეულ ჯგუფში. მაგალითად, პერიოდულად უნდა გაარკვიოთ ვინ არის Domain Admins ჯგუფის წევრი:

PS C:\> Get-ADGroupMember "დომენის ადმინისტრატორები"

სურათი 4 გვიჩვენებს შედეგს.


ბრინჯი. 4. Domain Admins ჯგუფის წევრები

cmdlet აჩვენებს AD ობიექტს ჯგუფის თითოეული წევრისთვის. რა ვუყოთ ბუდებულ ჯგუფებს? ჩემი ჯგუფი Chicago All Users არის წყობილი ჯგუფების კოლექცია. ყველა ანგარიშის სიის მისაღებად, უბრალოდ უნდა გამოვიყენო პარამეტრი -Რეკურსიული.

PS C:\> Get-ADGroupMember "Chicago All Users" -რეკურსიული | აირჩიეთ DistinguishedName

თუ გსურთ სხვა გზით წასვლა - იპოვეთ რომელ ჯგუფებშია მომხმარებელი - გამოიყენეთ მომხმარებლის თვისება Წევრი:

PS C:\> get-aduser jfrost -property Memberof | აირჩიეთ -ExpandProperty MemberOf CN=NewTest,OU=ჯგუფები,OU=თანამშრომლები, DC=GLOBOMANTICS,DC=ლოკალური CN=ჩიკაგოს ტესტი,OU=ჯგუფები,OU=თანამშრომლები, DC=GLOBOMANTICS,DC=ლოკალური CN=ჩიკაგო IT,OU= ჯგუფები,OU=თანამშრომლები, DC=GLOBOMANTICS,DC=ადგილობრივი CN=ჩიკაგოს გაყიდვების მომხმარებლები,OU=ჯგუფები,OU=თანამშრომლები, DC=GLOBOMANTICS,DC=ადგილობრივი

პარამეტრი გამოვიყენე - ExpandPropertyსახელების საჩვენებლად Წევრიხაზების მსგავსად.

ამოცანა 8: იპოვნეთ მოძველებული კომპიუტერის ანგარიშები

მე ხშირად მისვამენ ამ კითხვას: "როგორ ვიპოვო მოძველებული კომპიუტერის ანგარიშები?" და მე ყოველთვის ვპასუხობ: "რა არის შენთვის მოძველებული?" კომპანიებს განსხვავებული განმარტებები აქვთ იმის შესახებ, თუ როდის ითვლება კომპიუტერის ანგარიში (ან მომხმარებლის ანგარიში, არ აქვს მნიშვნელობა) მოძველებულად და მისი გამოყენება აღარ შეიძლება. ჩემთვის ყურადღებას ვაქცევ იმ ანგარიშებს, რომელთა პაროლები გარკვეული პერიოდის განმავლობაში არ შეცვლილა. ეს პერიოდი ჩემთვის არის 90 დღე - თუ კომპიუტერს ამ პერიოდში დომენთან ერთად პაროლი არ შეუცვლია, დიდი ალბათობით ის ოფლაინ და მოძველებულია. გამოყენებულია Cmdlet მიიღეთ-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -თვისებები *| აირჩიეთ სახელი, პაროლის ბოლო ნაკრები

ფილტრი მშვენივრად მუშაობს მყარი მნიშვნელობით, მაგრამ ეს კოდი განახლდება ყველა კომპიუტერის ანგარიშისთვის, რომლებსაც არ შეუცვლიათ პაროლები 2012 წლის 1 იანვრიდან. შედეგები ნაჩვენებია სურათზე 5.


ბრინჯი. 5. იპოვნეთ მოძველებული კომპიუტერული ანგარიშები

კიდევ ერთი ვარიანტი: დავუშვათ, რომ თქვენ ხართ Windows 2003 დომენის ფუნქციონალურ დონეზე LastLogontimeStamp. ეს მნიშვნელობა არის 100 ნანოწამიანი ინტერვალის რიცხვი 1601 წლის 1 იანვრიდან და ინახება GMT-ში, ამიტომ ამ მნიშვნელობასთან მუშაობა ცოტა რთულია:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -თვისებები * | აირჩიეთ სახელი,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),პაროლის დაყენება | დაალაგეთ LastLogonTimeStamp


ბრინჯი. 6. გადააკეთეთ LastLogonTimeStamp მნიშვნელობა ნაცნობ ფორმატში

ფილტრის შესაქმნელად, უნდა გადავიტანო თარიღი, მაგალითად, 2012 წლის 1 იანვარი, სწორ ფორმატში. კონვერტაცია ხორციელდება FileTime-ში:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

ახლა მე შემიძლია გამოვიყენო ეს ცვლადი ფილტრში მიიღეთ-ADComputer:

PS C:\> Get-ADComputer -ფილტრი "(lastlogontimestamp -lt $cutoff) -ან (lastlogontimestamp -არამსგავსი "*")" -საკუთრება * | აირჩიეთ Name,LastlogonTimestamp,PasswordLastSet

ზემოთ მოყვანილი კოდი პოულობს იმავე კომპიუტერებს, რომლებიც ნაჩვენებია სურათზე 5.

დავალება 9: გამორთეთ კომპიუტერის ანგარიში

შესაძლოა, როდესაც იპოვით უმოქმედო ან მოძველებულ ანგარიშებს, მოგინდებათ მათი დეაქტივაცია. ამის გაკეთება საკმაოდ მარტივია. ჩვენ გამოვიყენებთ იგივე cmdlet-ს, რომელიც ვიყენებდით მომხმარებლის ანგარიშებთან მუშაობისას. თქვენ შეგიძლიათ მისი გარკვევა გამოყენებით samAccountnameანგარიში.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif რა მოხდება, თუ: ოპერაცია "Set"-ის შესრულება სამიზნეზე "CN=CHI-SRV01, CN=კომპიუტერები,DC=GLOBOMANTICS,DC=local".

ან მილსადენის გამოხატვის გამოყენებით:

PS C:\> get-adcomputer "chi-srv01" | გათიშვა-ADAccount

მე ასევე შემიძლია ჩემი კოდის გამოყენება მოძველებული ანგარიშების მოსაძებნად და ყველა მათგანის დეაქტივაციისთვის:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -თვისებები *| გათიშვა-ADAccount

დავალება 10: იპოვეთ კომპიუტერები ტიპის მიხედვით

ასევე ხშირად მეკითხებიან, როგორ მოვძებნო კომპიუტერის ანგარიშები ტიპის მიხედვით, როგორიცაა სერვერები ან სამუშაო სადგურები. ეს მოითხოვს გარკვეულ კრეატიულობას თქვენი მხრიდან. AD-ში არაფერია რაც განასხვავებს სერვერს კლიენტისგან, გარდა ალბათ OS-ისა. თუ თქვენს კომპიუტერს აქვს Windows Server 2008, მოგიწევთ რამდენიმე დამატებითი ნაბიჯის შესრულება.
პირველ რიგში, თქვენ უნდა მიიღოთ ოპერაციული სისტემების სია და შემდეგ ჩვენ გავფილტროთ ანგარიშები ხელმისაწვდომი ოპერაციული სისტემების მიხედვით.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | აირჩიეთ OperatingSystem -unique | ოპერაციული სისტემის დალაგება

შედეგები ნაჩვენებია სურათზე 7.


ბრინჯი. 7. ოპერაციული სისტემის სიის აღდგენა

მსურს ვიპოვო ყველა კომპიუტერი, რომელიც მუშაობს სერვერის ოპერაციულ სისტემაზე:

PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | აირჩიეთ სახელი, Op* | ფორმატ-სია

შედეგები ნაჩვენებია სურათზე 8.

სხვა AD Get cmdlet-ების მსგავსად, თქვენ შეგიძლიათ დააკონფიგურიროთ ძიების პარამეტრები და საჭიროების შემთხვევაში შეზღუდოთ მოთხოვნა კონკრეტულ OU-ებზე. ყველა გამონათქვამი, რომელიც მე ვაჩვენე, შეიძლება იყოს ინტეგრირებული PowerShell-ის უფრო დიდ გამონათქვამებში. მაგალითად, შეგიძლიათ დაალაგოთ, დააჯგუფოთ, გამოიყენოთ ფილტრები, ექსპორტი CSV-ში, ან შექმნათ და ელფოსტით გაგზავნოთ HTML ანგარიშები - ყველაფერი PowerShell-იდან! ამ შემთხვევაში, თქვენ არ მოგიწევთ ერთი სკრიპტის დაწერა.
აქ არის ბონუსი: მომხმარებლის პაროლის ასაკის ანგარიში, შენახული HTML ფაილში:

PS C:\> Get-ADUser -ფილტრი "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | აირჩიეთ DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |დახარისხება PasswordAge -Descending | ConvertTo-Html -Title " პაროლი ასაკის ანგარიში" | Out-File c:\Work\pwage.htm !}

მიუხედავად იმისა, რომ ეს გამოთქმა შეიძლება ცოტა დამაშინებლად გამოიყურებოდეს, მისი გამოყენება მარტივია PowerShell-ის მინიმალური ცოდნით. და რჩება მხოლოდ ერთი ბოლო რჩევა: როგორ განვსაზღვროთ საბაჟო თვისება ე.წ პაროლი ასაკი. მნიშვნელობა წარმოადგენს უფსკრული დღევანდელობასა და PasswordLastSet თვისებას შორის. შემდეგ ვახარისხებ შედეგებს ჩემი ახალი ქონებისთვის. სურათი 9 გვიჩვენებს გამომავალს ჩემი მცირე სატესტო დომენისთვის.

განახლება:
პოსტი შეიცავს პორტალზე არსებული სტატიის თარგმანს

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 ფაილის შექმნა შედეგებით იგივეს გააკეთებს.

მე შემეძლო ამის გაკეთება ხელით $group-ის მნიშვნელობის და ფაილის ექსპორტის სახელის შეცვლით და სკრიპტის 80-ჯერ ხელახლა გაშვებით, მაგრამ ამის გასაკეთებლად PS-ით უნდა ვიყო სწრაფი.

მაგალითად results.csv?:

NAME AD_GROUP1 AD_GROUP2 AD_GROUP80 და ა.შ. user1 დიახ არა დიახ მომხმარებელი2 არა არა დიახ მომხმარებელი3 არა დიახ არა ექო "UserName`InfraLite" >> results.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Get-ADGroupMember -Identity $group -Recursive | აირჩიეთ -ExpandProperty SAMAccountName foreach ($user $users-ში) ( if ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) სხვა (echo "$user`tNo" >> შედეგები .csv ))

  • 2 პასუხი
  • დახარისხება:

    აქტივობა

0

თქვენი პრობლემის ტრივიალური გადაწყვეტა იქნება თქვენი არსებული კოდის სხვა ციკლში გადატანა და თითოეული ჯგუფისთვის გამომავალი ფაილის შექმნა:

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

უფრო ელეგანტური მიდგომა იქნება ჯგუფური რუკების შაბლონის შექმნა, მისი კლონირება თითოეული მომხმარებლისთვის და ასლის შევსება მომხმარებლის ჯგუფის წევრებთან ერთად. რაღაც ამდაგვარი უნდა იმუშაოს:

$template = @() Get-Content "C:\groups.txt" | ForEach-Object ( $template[$_] = $false ) $groups = @() Get-ADGroup -Filter * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_]) | 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" # ჰეშტაბლის დაყენება შემდგომი გამოყენებისთვის $UserHash = New-Object -TypeName System.Collections.Hashtable # Outer loop UserHash-ში მომხმარებლებისა და წევრობის დასამატებლად $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # აშორებს LPAP სინტაქსს მხოლოდ SAMAccountName ჯგუფის $Memberships = $UserInfo.MemberOf | ForEach-Object(($_.Split(",")) .replace("CN=","") ) #დამატება User=Membership წყვილი ჰეშში $UserHash.Add($_,$Memberships) ) #გარე ციკლი ობიექტის შესაქმნელად თითო მომხმარებლისთვის $Results = $UserArray | ForEach-Object( # ჯერ შექმენით მარტივი ობიექტი $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # დინამიურად დაამატეთ წევრები ობიექტს, $GroupArray $GroupArray-ის საფუძველზე | ForEach-Object ( #Checking $UserHash, რათა ნახოთ, გამოჩნდება თუ არა ჯგუფი მომხმარებლის წევრობის სიაში $UserIsMember = $UserHash.($User.Name) -contains $_ #ობიექტზე თვისების დამატება და მნიშვნელობა $User | წევრის დამატება -MemberType NoteProperty -Name $ _ -Value $UserIsMember ) #ობიექტის დაბრუნება ცვლადში Return $User ) #ობიექტების კონვერტაცია CSV-ში, შემდეგ გამოიტანეთ ისინი $Results |

ვიმედოვნებთ, რომ ყველაფერს აზრი აქვს. კომენტარი გავაკეთე, როგორც შემეძლო. ADSI-ზე კონვერტაცია ძალიან ადვილი იქნებოდა, თუ არ გქონდეთ დაინსტალირებული RSAT ნებისმიერ მოწყობილობაზე, რომელზეც თქვენ მუშაობთ. თუ დაგჭირდებათ, შემატყობინეთ და სწრაფ ცვლილებებს შევიტან.

გამოიყენება დირექტორია ობიექტების შესაქმნელად, შესაცვლელად და წასაშლელად. მომხმარებელს ასევე შეუძლია გამოიყენოს ბრძანება ldifdeსქემის გაფართოება, Active Directory მომხმარებლის და ჯგუფის ინფორმაციის ექსპორტი სხვა აპლიკაციებში ან სერვისებზე და ADAM (Active Directory Application Mode) სერვისის შევსება სხვა დირექტორია სერვისების მონაცემებით.

Სინტაქსი

ldifde [-მე] [-ვ ფაილის სახელი] [-ს სერვერის სახელი] [-გ ხაზი 1 ხაზი 2] [-ვ] [-ჯ გზა] [-ტ პორტის ნომერი] [-დ DN_base] [-რ filter_LDAP] [-გვ რეგიონი] [-ლ LDAP_attribute_list] [-ო LDAP_attribute_list] [-გ] [-მ] [-ნ] [-კ] [-ა ] [-ბ ] [-? ]

Პარამეტრები

-მე განსაზღვრავს იმპორტის რეჟიმს. თუ პარამეტრი არ არის განსაზღვრული, ექსპორტის რეჟიმი გამოიყენება ნაგულისხმევად. -ვფაილის სახელი განსაზღვრავს იმპორტის ან ექსპორტის ფაილის სახელს. -სსერვერის სახელი განსაზღვრავს კომპიუტერს, რომელზეც უნდა განხორციელდეს იმპორტის ან ექსპორტის ოპერაცია. ნაგულისხმევი პროგრამა ldifdeშესრულდება კომპიუტერზე, რომელზეც ldifdeდაყენებული. -გხაზი 1 ხაზი 2 ცვლის ყველა მოვლენას ხაზები 1შინაარსი ხაზები 2. ჩვეულებრივ გამოიყენება, როდესაც თქვენ ახორციელებთ მონაცემთა იმპორტს ერთი დომენიდან მეორეში და გჭირდებათ დომენის გამორჩეული სახელის შეცვლა, რომელიც ახორციელებს ექსპორტს ( ხაზი 1), დომენის სახელის იმპორტი ( ხაზი 2). -ვ რთავს დეტალური ჟურნალის რეჟიმს. -ჯგზა განსაზღვრავს ჟურნალის ფაილის ადგილმდებარეობას. ნაგულისხმევი არის მიმდინარე გზა. -ტპორტის ნომერი განსაზღვრავს Lightweight Directory Access Protocol (LDAP) პორტის ნომერს. ნაგულისხმევი LDAP პორტი არის 389. გლობალური კატალოგის პორტი არის 3268. -დDN_base განსაზღვრავს საძიებო ბაზის გამორჩეულ სახელს მონაცემების ექსპორტისთვის. -რLDAP ფილტრი ქმნის LDAP საძიებო ფილტრს მონაცემთა ექსპორტისთვის. მაგალითად, შემდეგი ფილტრი ახდენს ყველა მომხმარებლის ექსპორტს კონკრეტული შუა სახელით: csvde -r (და(objectClass=მომხმარებელი)(sn=გვარი)) -გვრეგიონი განსაზღვრავს საძიებო ზონას. ძიების ფარგლების პარამეტრებია ბაზა, OneLevelდა ქვეხე. -ლLDAP_attribute_list განსაზღვრავს ექსპორტის მოთხოვნის შედეგებში დაბრუნებული ატრიბუტების ჩამონათვალს. თუ ეს პარამეტრი გამოტოვებულია, ყველა ატრიბუტი ბრუნდება. -ოLDAP_attribute_list განსაზღვრავს ატრიბუტების სიას, რომლებიც უნდა გამოტოვოთ ექსპორტის მოთხოვნის შედეგებიდან. ეს პარამეტრი ჩვეულებრივ გამოიყენება Active Directory-დან ობიექტების ექსპორტისას და შემდეგ მათი იმპორტის სხვა LDAP-თან თავსებადი დირექტორიაში. თუ რომელიმე ატრიბუტი არ არის მხარდაჭერილი სხვა კატალოგში, ისინი შეიძლება გამოირიცხოს შედეგების ნაკრებიდან ამ პარამეტრის გამოყენებით. -გ გამორიცხავს გვერდების ძიებას. -მ გამოტოვებს ატრიბუტებს, რომელთა დაწერა შეუძლებელია, მაგ ObjectGUIDდა objectSID. -ნ გამოტოვებს ორობითი მნიშვნელობების ექსპორტს. -კ უგულებელყოფს შეცდომებს იმპორტის ოპერაციის დროს და აგრძელებს დამუშავებას. ქვემოთ მოცემულია იგნორირებული შეცდომების სრული სია:

  • ობიექტი უკვე არის ჯგუფის წევრი;
  • ობიექტის კლასის დარღვევა (რაც ნიშნავს, რომ მითითებული ობიექტის კლასი არ არსებობს), თუ იმპორტირებულ ობიექტს არ აქვს სხვა ატრიბუტები;
  • ობიექტი უკვე არსებობს;
  • შეზღუდვის დარღვევა;
  • ატრიბუტი ან მნიშვნელობა უკვე არსებობს;
  • ასეთი ობიექტი არ არსებობს.
-აგამორჩეული_სახელი_პაროლი განსაზღვრავს ბრძანების შესრულებას მითითებულის გამოყენებით გამორჩეული_სახელი_მომხმარებლის_სახელიდა პაროლი -ბ. -ბმომხმარებლის სახელი დომენის პაროლი განსაზღვრავს ბრძანებას, რომელიც უნდა შესრულდეს მითითებულის გამოყენებით მომხმარებლის სახელი, დომენი და პაროლი. ნაგულისხმევად, ბრძანება შესრულდება იმ მომხმარებლის რწმუნებათა სიგელების გამოყენებით, რომელიც ამჟამად შესულია ქსელში. პარამეტრით გამოყენება შეუძლებელია -ა. -? აჩვენებს ბრძანებების მენიუს.

შენიშვნები

  • პარამეტრით -გშეგიძლიათ გამოიყენოთ მუდმივები #schemaNamingContextდა #configurationNamingContextსქემის დირექტორიას დანაყოფის და კონფიგურაციის დირექტორიას დანაყოფის გამორჩეული სახელების ნაცვლად.
  • ბრძანებისთვის იმპორტის ფაილის შექმნისას ldifde, გამოიყენეთ მნიშვნელობა შეცვლა ტიპიიმპორტის ფაილში შემავალი ცვლილებების ტიპის დასადგენად. ღირებულებები შეცვლა ტიპიმოცემულია ქვემოთ მოცემულ ცხრილში.

ქვემოთ მოცემულია LDAP იმპორტის ფაილის მაგალითი LDIF ფორმატში, რომელიც იყენებს მნიშვნელობას დამატება:
DN: CN=შერჩეული_მომხმარებელი,DC=დომენის სახელი
ცვლილების ტიპი: დამატება
CN: შერჩეული_მომხმარებელი
აღწერა:ფაილის_აღწერილობა
objectClass: მომხმარებელი
objectClass: შერჩეული_მომხმარებელი

მაგალითები

დაბრუნებული ობიექტების მხოლოდ გამორჩეული სახელის, საერთო სახელის, სახელის, გვარის და ტელეფონის ნომრის ამოსაღებად, შეიყვანეთ:
-ლ გამორჩეული_სახელი, CN, სახელი, ს.ნ. ტელეფონი
ობიექტისთვის გლობალურად უნიკალური იდენტიფიკატორის (GUID) გამოსარიცხად, შეიყვანეთ:
-ო როდესაც_შექმნა, როდის_შეიცვალა, ობიექტი_GUID

საიდუმლო არ არის, რომ PowerShell-ის პირველი ვერსიიდან მოყოლებული მაიკროსოფტი ცდილობდა მას Windows-ის ადმინისტრაციის მთავარ ინსტრუმენტად აქციოს. და მრავალი თვალსაზრისით გამოდის! დღეს, მარტივი მაგალითების გამოყენებით, ჩვენ ვაჩვენებთ PowerShell-ის შესაძლებლობებს, რომლებიც შეიძლება გამოყენებულ იქნას Active Directory მომხმარებლებისა და მათი ატრიბუტების შესახებ სხვადასხვა ინფორმაციის მისაღებად.

შენიშვნა. ადრე, AD მომხმარებლის ანგარიშების ატრიბუტების შესახებ ინფორმაციის მისაღებად, თქვენ უნდა გამოეყენებინათ სხვადასხვა ხელსაწყოები: ADUC კონსოლი (მათ შორის), კომუნალური პროგრამა და ა.შ. ინსტრუმენტის არჩევანი, როგორც წესი, ეფუძნებოდა დავალებას და ადმინისტრატორის პროგრამირების შესაძლებლობებს.

PowerShell 2.0-მა გააცნო Active Directory-თან მუშაობის სპეციალური მოდული - (დანერგილია Windows Server 2008 R2-ში), რომლის cmdlet-ები საშუალებას გაძლევთ შეასრულოთ სხვადასხვა მანიპულაციები AD დირექტორია ობიექტებთან. cmdlet გამოიყენება Active Directory დომენის მომხმარებლებისა და მათი თვისებების შესახებ ინფორმაციის მისაღებად მიიღეთ-ADUser. თქვენ შეგიძლიათ გამოიყენოთ Get-ADUser cmdlet, რომ მიიღოთ AD-ში არსებული მომხმარებლის ანგარიშის ნებისმიერი ატრიბუტის მნიშვნელობა. გარდა ამისა, შეგიძლიათ მიუთითოთ შერჩევის სხვადასხვა კრიტერიუმი და შექმნათ დომენის მომხმარებლების სიები და მათი ატრიბუტები.

ამ მაგალითში, ჩვენ გაჩვენებთ, თუ როგორ გამოიყენოთ PowerShell Get-ADUser cmdlet, რათა მიიღოთ ინფორმაცია მომხმარებლის პაროლის ბოლოს როდის შეიცვალა და როდის იწურება.

გაუშვით Powershll ფანჯარა ადმინისტრატორის უფლებებით და შემოიტანეთ Active Directory მოდული ბრძანებით:

იმპორტი-მოდულის აქტიური დირექტორია

რჩევა. Windows Server 2012 და უფრო მაღალ ვერსიაში შეგიძლიათ გამოტოვოთ ეს ელემენტი, რადგან PowerShell Active Directory მოდული ჩართულია ნაგულისხმევად.

კლიენტის ოპერაციულ სისტემებში (მაგალითად, Windows 10), Get-AdUser მეთაურის მუშაობისთვის, თქვენ უნდა დააინსტალიროთ RSAT-ის შესაბამისი ვერსია და ჩართოთ კომპონენტი მართვის პანელში. Active Directory მოდული Windows PowerShell-ისთვის(Remote Server Administration Tools -> Role Administration Tools -> AD DS და AD LDS Tools -> AD DS Tools).

Get-ADUser cmdlet არგუმენტების სრული სია შეგიძლიათ მიიღოთ შემდეგნაირად:

დაეხმარეთ Get-ADUser-ს

დომენის ყველა ანგარიშის სიის საჩვენებლად, გაუშვით ბრძანება:

Get-ADUser -ფილტრი *

დაბრუნებული სიის ფორმატი არ არის ძალიან მოსახერხებელი გამოსაყენებლად, 120-ზე მეტი ატრიბუტიდან და მომხმარებლის ანგარიშების თვისებებიდან მხოლოდ ზოგიერთი ძირითადი 10 არის ნაჩვენები (DN, SamAccountName, Name, UPN და ა.შ.) გარდა ამისა, ჩვენ ვხედავთ, რომ არსებობს არ არის ინფორმაცია ბოლო პაროლის შეცვლის დროის შესახებ.

მომხმარებლის ტუზერის ყველა ხელმისაწვდომი ატრიბუტის შესახებ სრული ინფორმაციის საჩვენებლად, გაუშვით ბრძანება:

Get-ADUser -identity tuser -თვისებები *

ასე რომ, ჩვენ ვხედავთ AD მომხმარებლის ატრიბუტების სრულ ჩამონათვალს და მათ მნიშვნელობებს, რომლებიც დაკავშირებულია მომხმარებლის ანგარიშთან. შემდეგი, ჩვენ გადავალთ Get-ADUser cmdlet-ის გამოსავლის ფორმატირებაზე, რათა გამოჩნდეს ჩვენთვის საჭირო ველები. ჩვენ გვაინტერესებს ატრიბუტები:

  • პაროლს ვადა გაუვიდა
  • PasswordLastSet
  • PasswordNeverExpires

მოდით გავუშვათ ბრძანება:

Get-ADUser tuser -თვისებები PasswordExpired, PasswordLastSet, PasswordNeverExpires

ახლა მომხმარებლის მონაცემები შეიცავს ინფორმაციას პაროლის შეცვლის თარიღსა და ვადის ამოწურვის დროზე. მოდით წარმოვადგინოთ ინფორმაცია უფრო მოსახერხებელი ცხრილის სახით:

Get-ADUser -ფილტრი * -თვისებები PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, Password Expired, PasswordLastSet, PasswordNeverExpires

მომხმარებლის მონაცემების საჩვენებლად კონკრეტული OU-დან, გამოიყენეთ პარამეტრი SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -ფილტრი * -თვისებები PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, Password Expired, PasswordLastSet, PasswordNeverExpires

ბრძანების შედეგი შეიძლება ექსპორტირებული იყოს ტექსტურ ფაილში:

Get-ADUser -ფილტრი * -თვისებები PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft სახელი, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

ან CSV-ში, რომელიც მოხერხებულად იქნება ექსპორტირებული მომავალში Excel-ში (დამატებით გამოყენებით დალაგება-ობიექტიმოდით დავახარისხოთ ცხრილი PasswordLastSet სვეტის მიხედვით და დავამატოთ პირობა სადაც- მომხმარებლის სახელი უნდა შეიცავდეს სტრიქონს "დიმიტრი"):

Get-ADUser -ფილტრი * -თვისებები PasswordExpired, PasswordLastSet, PasswordNeverExpires | სადაც ($_.სახელი –როგორც „*Dmitry*“) | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2015.csv

ამრიგად, თქვენ შეგიძლიათ შექმნათ ცხრილი Active Directory მომხმარებლის ნებისმიერი აუცილებელი ატრიბუტით.

კონკრეტული მახასიათებლის საფუძველზე AD მომხმარებლის ანგარიშების სიის მისაღებად გამოიყენეთ –Filter პარამეტრი. ამ პარამეტრის არგუმენტად შეგიძლიათ მიუთითოთ Active Directory მომხმარებლის გარკვეული ატრიბუტების მნიშვნელობა, რაც გამოიწვევს Get-ADUser cmdlet-ის გამოყენებას იმ მომხმარებლებისთვის, რომლებიც შეესაბამება ფილტრის კრიტერიუმებს.

AD მომხმარებლების გამომავალი, რომელთა სახელი იწყება Roman-ით:

Get-ADUser -ფილტრი (სახელი, როგორც "Roman*")

Get-ADUser -ფილტრი (SamAccountName-ის მსგავსი "*") | ღონისძიება-ობიექტი

ყველა აქტიური (არ დაბლოკილი) ანგარიშის სია AD-ში:

Get-ADUser -Filter (ჩართულია -eq "True") | აირჩიეთ-ობიექტი SamAccountName,Name,Name,GivenName | ფორმატი-ცხრილი

ვადაგასული პაროლით ანგარიშების სია:

Get-ADUser -ფილტრი (ჩართულია -eq $True) -თვისებები პაროლი ამოიწურა | where ($_. პაროლი ვადაგასულია)

აქტიური ანგარიშების სია ელფოსტის მისამართებით:

Get-ADUser -ფილტრი ((ფოსტა -ne "null") -და (ჩართულია -eq "true")) -თვისებები გვარი,სახელი,ფოსტა | აირჩიეთ-ობიექტის სახელი, გვარი, სახელი, ფოსტა | ფორმატი-ცხრილი

დავალება: ტექსტურ ფაილში შენახული ანგარიშების სიისთვის (თითო ანგარიში თითო სტრიქონში), თქვენ უნდა მიიღოთ მომხმარებლის ტელეფონის ნომერი 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 -ფილტრი ((ფოსტა -ne "null") -და (ჩართულია -eq "true")) -თვისებები გვარი,სახელი,ფოსტა | აირჩიეთ-ობიექტის სახელი, გვარი, სახელი, ფოსტა | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

მომხმარებლები, რომლებსაც არ შეუცვლიათ პაროლი ბოლო 90 დღის განმავლობაში:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -ფილტრი ((passwordlastset -le $90_days))

$user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -დაშიფვრის ბაიტი

იმ ჯგუფების სია, რომლებსაც ეკუთვნის მომხმარებლის ანგარიში

Get-AdUser winadmin -Properties Memberof | აირჩიეთ Memberof -expandproperty Memberof



გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: