Λίστα ενεργών χρηστών διαφημίσεων Powershell. Πώς να λάβετε μια λίστα με επιλεγμένες ομάδες AD στις οποίες είναι μέλη μια μεγάλη λίστα χρηστών; Ζητήστε κωδικό κάτω από το σπόιλερ

Σήμερα θα προσπαθήσουμε να κατεβάσουμε μια λίστα με όλους τους χρήστες σε ένα ξεχωριστό αρχείο από την υπηρεσία καταλόγου Active Directory. Ο κύριος βοηθός μας σε αυτό το θέμα θα είναι η PowerShell. Το θέμα είναι ότι η Microsoft σχεδίασε αρχικά την κονσόλα εντολών PowerShell ως το κύριο εργαλείο για τη διαχείριση στοιχείων διακομιστή των Windows. Και σήμερα, που έχουμε ήδη την έκδοση 2.0, σε γενικές γραμμές, έτσι είναι.

Ακόμη και στο πρόσφατο παρελθόν, για να αλληλεπιδράσουν με κάποιο τρόπο με το AD, οι διαχειριστές έπρεπε να έχουν στη διάθεσή τους είτε το βοηθητικό πρόγραμμα dsquery είτε διάφορα είδη σεναρίων ή βοηθητικών προγραμμάτων. Σήμερα, ξεκινώντας με τον Windows Server 2008 R2, μπορούμε να εργαστούμε με το AD μέσω του PowerShell. Με την εμφάνιση του PowerShell 2.0, χρησιμοποιείται μια ειδική μονάδα για την αλληλεπίδραση με την υπηρεσία καταλόγου Active Directory Ενότητα Active Directory για Windows PowerShell, το οποίο περιέχει την απαραίτητη λίστα cmdlet. Για τις εργασίες μας θα χρησιμοποιήσουμε την εντολή Get-ADUser.

Έτσι, ανάλογα με το λειτουργικό σύστημα στο οποίο θα εκτελούμε την κονσόλα PowerShell, θα χρειαστεί να εκτελέσουμε «προπαρασκευαστικά βήματα».

1) Εάν εργαζόμαστε στον Windows Server μέχρι την έκδοση 2012, τότε πρέπει να εκτελέσουμε την εντολή:

  • Εισαγωγή-Μονάδα ενεργού καταλόγου – εντολή για εισαγωγή μιας ενότητας στο AD

Για εκδόσεις λειτουργικού συστήματος από το 2012 και νεότερες, αυτή η ενότητα είναι ήδη ενεργοποιημένη από προεπιλογή.

2) Εάν εργαζόμαστε από οποιονδήποτε πελάτη Windows, τότε το πακέτο απομακρυσμένης διαχείρισης RSAT πρέπει να είναι εγκατεστημένο σε αυτό, με εγκατεστημένο το στοιχείο Active Directory Module για Windows PowerShell.

Αξίζει να σημειωθεί ότι το cmdlet Get-ADUser συνιστάται να εκτελείται όταν ο όγκος των δεδομένων που ανεβαίνουν είναι έως και 1000 χρήστες.

Εξαγωγή χρηστών AD χρησιμοποιώντας το PowerShell σε ξεχωριστό αρχείο

Αρχικά, ας καλέσουμε τη βοήθεια για την εντολή Get-ADUser. Ως αποτέλεσμα, θα λάβετε όλες τις απαραίτητες εντολές για περαιτέρω διαχείριση.

  • βοήθεια Get-ADUser – εντολή για κλήση βοήθειας

Για να λάβετε μια λίστα με όλους τους χρήστες με όλες τις ιδιότητες σε ένα παράθυρο PowerShell, πρέπει να εκτελέσετε την ακόλουθη εντολή:

  • Get-ADUser -φίλτρο * – εξαγωγή λίστας χρηστών AD

Αυτή η μεταφόρτωση δεν είναι εντελώς ενημερωτική και δεν χωράει όλες τις απαραίτητες πληροφορίες στο παράθυρο. Επομένως, ας προσπαθήσουμε να περιορίσουμε την αναζήτηση και να εμφανίσουμε τις ιδιότητες ενός συγκεκριμένου χρήστη με το όνομα user1:

  • Get-ADUser -identity user1 -properties * – εξαγωγή ιδιοτήτων ενός συγκεκριμένου χρήστη

Τώρα ας προσπαθήσουμε να εξαγάγουμε τη λίστα όλων των χρηστών με τις ιδιότητές τους σε εξωτερικό txt ή csvαρχείο:

  • Get-ADUser -φίλτρο * -ιδιότητες * | Εξαγωγή-csv -διαδρομή c:\users.csv -κωδικοποίηση Unicode – εξαγωγή χρηστών σε ξεχωριστό αρχείο

Θα ήθελα να δώσω ιδιαίτερη προσοχή στο κλειδί -κωδικοποίηση Unicode. Χρησιμεύει για να διασφαλιστεί ότι το ρωσικό κυριλλικό αλφάβητο, μετά την εξαγωγή από το μ.Χ., μπορεί να εμφανίζεται σωστά στο μεταφορτωμένο αρχείο. Για παράδειγμα, μέσω του 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.
Λοιπόν, παρακάτω είναι η μετάφραση του άρθρου “Top 10 Active Directory Tasks Solved with PowerShell”.

Η διαχείριση της υπηρεσίας καταλόγου Active Directory (AD) χρησιμοποιώντας το Windows PowerShell είναι ευκολότερη από ό,τι νομίζετε και θέλω να σας το αποδείξω. Μπορείτε απλά να πάρετε τα παρακάτω σενάρια και να τα χρησιμοποιήσετε για να επιλύσετε μια σειρά από εργασίες διαχείρισης AD.

Απαιτήσεις

Για να χρησιμοποιήσετε το PowerShell για τη διαχείριση του AD, πρέπει να πληροίτε αρκετές απαιτήσεις. Θα δείξω πώς λειτουργούν τα cmdlet AD χρησιμοποιώντας έναν υπολογιστή με Windows 7 ως παράδειγμα.
Για να χρησιμοποιήσετε τα cmdlet, πρέπει να έχετε έναν ελεγκτή τομέα Windows Server 2008 R2 ή μπορείτε να κάνετε λήψη και εγκατάσταση της υπηρεσίας πύλης διαχείρισης Active Directory σε παλαιού τύπου DC. Διαβάστε προσεκτικά την τεκμηρίωση πριν την εγκατάσταση. Απαιτείται επανεκκίνηση του CD.
Στην πλευρά του πελάτη, πραγματοποιήστε λήψη και εγκατάσταση (RSAT) είτε για Windows 7 είτε για Windows 8. Στα Windows 7, θα χρειαστεί να ανοίξετε Πίνακες Ελέγχουκεφάλαιο Προγράμματακαι επιλέξτε Ενεργοποιήστε ή απενεργοποιήστε τις δυνατότητες των Windows. Εύρημα Εργαλεία διαχείρισης απομακρυσμένου διακομιστήκαι επεκτείνετε την ενότητα Εργαλεία Διαχείρισης Ρόλων. Επιλέξτε τα κατάλληλα στοιχεία για τα Εργαλεία AD DS και AD LDS, ειδικά σημειώστε ότι το στοιχείο πρέπει να επιλεγεί Ενότητα 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– η καλύτερη επιλογή) και ορίστε νέο κωδικό πρόσβασης. Ακολουθεί ένα παράδειγμα για τον χρήστη Jack Frost:

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

Δυστυχώς, υπάρχει ένα σφάλμα με αυτό το cmdlet: -Πάσθρου, -Κι αν, Και -Επιβεβαιώνωδεν δουλεύει. Εάν προτιμάτε μια συντόμευση, δοκιμάστε αυτό:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

Ως αποτέλεσμα, πρέπει ο Jack να αλλάξει τον κωδικό πρόσβασής του την επόμενη φορά που θα συνδεθεί, οπότε τροποποιώ τον λογαριασμό χρησιμοποιώντας Set-ADUser.

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

Τα αποτελέσματα της εκτέλεσης του cmdlet δεν εγγράφονται στην κονσόλα. Εάν πρέπει να γίνει αυτό, χρησιμοποιήστε -Αληθής. Αλλά μπορώ να μάθω αν η λειτουργία ήταν επιτυχής ή όχι ανακτώντας το όνομα χρήστη χρησιμοποιώντας το cmdlet Get-ADUserκαι προσδιορίζοντας το ακίνητο Ο κωδικός έχει λήξει, όπως φαίνεται στο σχήμα 2.


Ρύζι. 2. Αποτελέσματα του Get-ADUser Cmdlet με την ιδιότητα PasswordExpired

Κατώτατη γραμμή: Η επαναφορά του κωδικού πρόσβασης ενός χρήστη χρησιμοποιώντας το PowerShell δεν είναι καθόλου δύσκολη. Ομολογώ ότι η επαναφορά του κωδικού πρόσβασης είναι επίσης εύκολη μέσω του snap Χρήστες και υπολογιστές Active Directoryκονσόλες Κονσόλα διαχείρισης της Microsoft (MMC).Ωστόσο, η χρήση του PowerShell είναι κατάλληλη εάν χρειάζεται να αναθέσετε μια εργασία, δεν θέλετε να αναπτύξετε το προαναφερθέν συμπληρωματικό πρόγραμμα ή εάν επαναφέρετε έναν κωδικό πρόσβασης ως μέρος μιας μεγάλης αυτοματοποιημένης διαδικασίας IT.

Εργασία 2: Ενεργοποίηση και απενεργοποίηση λογαριασμών

Τώρα ας απενεργοποιήσουμε τον λογαριασμό. Ας συνεχίσουμε να δουλεύουμε με τον Τζακ Φροστ. Αυτός ο κώδικας χρησιμοποιεί την παράμετρο -Κι αν, το οποίο μπορείτε να βρείτε σε άλλα comadlet που κάνουν αλλαγές για να δοκιμάσουν την εντολή μου χωρίς να την εκτελούν.

PS C:\> Disable-ADAccount jfrost -whatif Τι κι αν: Εκτέλεση της λειτουργίας "Set" στον στόχο "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Τώρα ας το απενεργοποιήσουμε πραγματικά:

PS C:\> Disable-ADAAccount jfrost

Και όταν έρθει η ώρα να ενεργοποιήσουμε τον λογαριασμό, ποιο cmdlet θα μας βοηθήσει;

PS C:\>Enable-ADAAccount jfrost

Αυτά τα cmdlet μπορούν να χρησιμοποιηθούν σε μια διοχετευτική έκφραση, επιτρέποντάς σας να ενεργοποιήσετε ή να απενεργοποιήσετε όσους λογαριασμούς θέλετε. Για παράδειγμα, αυτός ο κωδικός θα απενεργοποιήσει όλους τους λογαριασμούς στο τμήμα πωλήσεων

ΥΓ Γ:\> get-aduser -filter "department -eq "sales"" | απενεργοποίηση-λογαριασμός

Φυσικά, γράψτε ένα φίλτρο για Get-ADUserαρκετά περίπλοκο, αλλά εδώ είναι που η χρήση της παραμέτρου -Κι ανμαζί με το cmdlet Απενεργοποίηση λογαριασμού ADAέρχεται στη διάσωση.

Εργασία 3: Ξεκλειδώστε τον λογαριασμό χρήστη

Σκεφτείτε μια κατάσταση όπου ο Jack έκλεισε τον λογαριασμό του ενώ προσπαθούσε να εισαγάγει έναν νέο κωδικό πρόσβασης. Αντί να προσπαθείς να βρεις τον λογαριασμό του μέσω του GUI, η διαδικασία ξεκλειδώματος μπορεί να γίνει με μια απλή εντολή.

PS C:\> Ξεκλείδωμα-ADAA λογαριασμός jfrost

Το cmdlet υποστηρίζει επίσης παραμέτρους -Κι ανΚαι -Επιβεβαιώνω.

Εργασία 4: Διαγραφή λογαριασμού

Δεν έχει σημασία πόσους χρήστες αφαιρείτε - είναι εύκολο να το κάνετε χρησιμοποιώντας το cmdlet Remove-ADUser. Δεν θέλω να αφαιρέσω τον Jack Frost, αλλά αν ήθελα, θα χρησιμοποιούσα κώδικα όπως αυτός:

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"" -ιδιότητα WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | όπου ($_.WhenChanged -le (Get-Date).AddDays(-180)) | Κατάργηση-ADuser -whatif

Αυτή η εντολή θα βρει και θα διαγράψει τυχόν απενεργοποιημένους λογαριασμούς Employees OU που δεν έχουν τροποποιηθεί για 180 ημέρες ή περισσότερες.

Εργασία 5: Εύρεση κενών ομάδων

Η διαχείριση ομάδων είναι μια ατελείωτη και άχαρη εργασία. Υπάρχουν πολλοί τρόποι για να βρείτε κενές ομάδες. Ορισμένες εκφράσεις μπορεί να λειτουργούν καλύτερα από άλλες, ανάλογα με τον οργανισμό σας. Ο παρακάτω κώδικας θα βρει όλες τις ομάδες στον τομέα, συμπεριλαμβανομένων των ενσωματωμένων.

PS C:\> get-adgroup -filter * | where (-Όχι ($_ | get-adgroupmember)) | Επιλέξτε Όνομα

Εάν έχετε ομάδες με εκατοντάδες μέλη, τότε η χρήση αυτής της εντολής μπορεί να διαρκέσει πολύ. Get-ADGroupMemberελέγχει κάθε ομάδα. Εάν μπορείτε να περιορίσετε ή να προσαρμόσετε, θα είναι καλύτερα.
Εδώ είναι μια άλλη προσέγγιση:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Επιλέξτε Όνομα, Ομάδα*

Αυτή η εντολή βρίσκει όλες τις Universal ομάδες που δεν έχουν συμμετοχή σε Ομάδες OU και εμφανίζει ορισμένες από τις ιδιότητες. Το αποτέλεσμα φαίνεται στο Σχήμα 3.


Ρύζι. 3. Αναζήτηση και φιλτράρισμα καθολικών ομάδων

Εργασία 6: Προσθήκη χρηστών σε μια ομάδα

Ας προσθέσουμε τον Jack Frost στην ομάδα πληροφορικής του Σικάγο:

PS C:\> add-adgroupmember "chicago IT" -Μέλη jfrost

Ναι, είναι τόσο απλό. Μπορείτε επίσης εύκολα να προσθέσετε εκατοντάδες χρήστες σε ομάδες, αν και το βρίσκω λίγο άβολο:

PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq "Chicago"")

Χρησιμοποίησα την έκφραση με παρένθεση για να βρω όλους τους χρήστες που έχουν την ιδιοκτησία City στο Σικάγο. Ο κώδικας σε παρένθεση εκτελείται και τα αντικείμενα που προκύπτουν μεταβιβάζονται στην παράμετρο –Member. Κάθε αντικείμενο χρήστη προστίθεται στην ομάδα υπαλλήλων του Σικάγο. Δεν έχει σημασία αν έχουμε να κάνουμε με 5 ή 5000 χρήστες, η ενημέρωση των μελών ομάδας διαρκεί λίγα μόνο δευτερόλεπτα. Αυτή η έκφραση μπορεί επίσης να γραφτεί χρησιμοποιώντας ForEach-Objectτι μπορεί να είναι πιο βολικό:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach (Add-ADGroupMember "Chicago Employees" -Member $_)

Εργασία 7: Καταγράψτε τα μέλη της ομάδας

Ίσως θέλετε να μάθετε ποιος ανήκει σε μια συγκεκριμένη ομάδα. Για παράδειγμα, θα πρέπει να ανακαλύπτετε περιοδικά ποιος είναι μέλος της ομάδας Domain Admins:

PS C:\> Get-ADGroupMember "Διαχειριστές τομέα"

Το Σχήμα 4 δείχνει το αποτέλεσμα.


Ρύζι. 4. Μέλη της ομάδας Domain Admins

Το cmdlet εμφανίζει το αντικείμενο AD για κάθε μέλος της ομάδας. Τι να κάνετε με τις ένθετες ομάδες; Η ομάδα μου Σικάγο Όλοι οι χρήστες είναι μια συλλογή από ένθετες ομάδες. Για να λάβω μια λίστα με όλους τους λογαριασμούς, πρέπει απλώς να χρησιμοποιήσω την παράμετρο – Αναδρομικό.

PS C:\> Get-ADGroupMember "Chicago All Users" -Αναδρομικό | Επιλέξτε DistinguishedName

Εάν θέλετε να πάτε αντίθετα - βρείτε σε ποιες ομάδες ανήκει ένας χρήστης - χρησιμοποιήστε την ιδιότητα χρήστη Μέλος:

PS C:\> get-aduser jfrost -property Memberof | Επιλέξτε -ExpandProperty MemberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees,DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU= Ομάδες,OU=Εργαζόμενοι, DC=GLOBOMANTICS,DC=τοπικοί CN=Χρήστες πωλήσεων Σικάγο,OU=Ομάδες,OU=Εργαζόμενοι, DC=GLOBOMANTICS,DC=τοπικοί

Χρησιμοποίησα την παράμετρο -ExpandPropertyγια εμφάνιση ονομάτων Μέλοςσαν γραμμές.

Εργασία 8: Βρείτε ξεπερασμένους λογαριασμούς υπολογιστή

Μου κάνουν συχνά αυτήν την ερώτηση: "Πώς μπορώ να βρω ξεπερασμένους λογαριασμούς υπολογιστή;" Και πάντα απαντώ: «Τι είναι ξεπερασμένο για σένα;» Οι εταιρείες έχουν διαφορετικούς ορισμούς για το πότε ένας λογαριασμός υπολογιστή (ή λογαριασμός χρήστη, δεν έχει σημασία) θεωρείται απαρχαιωμένος και δεν μπορεί πλέον να χρησιμοποιηθεί. Για μένα, δίνω προσοχή σε αυτούς τους λογαριασμούς των οποίων οι κωδικοί πρόσβασης δεν έχουν αλλάξει για ένα ορισμένο χρονικό διάστημα. Αυτή η περίοδος για μένα είναι 90 ημέρες - εάν ο υπολογιστής δεν έχει αλλάξει τον κωδικό πρόσβασης μαζί με τον τομέα κατά τη διάρκεια αυτής της περιόδου, πιθανότατα είναι εκτός σύνδεσης και ξεπερασμένος. Χρησιμοποιείται cmdlet Get-ADComputer:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -ιδιότητες *| Επιλέξτε όνομα,passwordlastset

Το φίλτρο λειτουργεί εξαιρετικά με σκληρή τιμή, αλλά αυτός ο κωδικός θα ενημερωθεί για όλους τους λογαριασμούς υπολογιστών που δεν έχουν αλλάξει τους κωδικούς πρόσβασης από την 1η Ιανουαρίου 2012. Τα αποτελέσματα φαίνονται στο Σχήμα 5.


Ρύζι. 5. Βρείτε ξεπερασμένους λογαριασμούς υπολογιστών

Μια άλλη επιλογή: ας υποθέσουμε ότι βρίσκεστε τουλάχιστον στο λειτουργικό επίπεδο τομέα των Windows 2003 Φιλτράρισμα κατά ιδιότητα LastLogontimeStamp. Αυτή η τιμή είναι ο αριθμός των διαστημάτων των 100 νανοδευτερόλεπτων από την 1η Ιανουαρίου 1601 και αποθηκεύεται σε GMT, επομένως η εργασία με αυτήν την τιμή είναι λίγο δύσκολη:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -ιδιότητες * | επιλέξτε όνομα,lastlogontimestamp, @(Name="LastLogon";Expression=(::FromFileTime ($_.Lastlogontimestamp))),passwordlastset | Ταξινόμηση LastLogonTimeStamp


Ρύζι. 6. Μετατρέψτε την τιμή LastLogonTimeStamp σε μια γνωστή μορφή

Για να δημιουργήσω ένα φίλτρο, πρέπει να μετατρέψω την ημερομηνία, για παράδειγμα 1 Ιανουαρίου 2012, στη σωστή μορφή. Η μετατροπή πραγματοποιείται στο FileTime:

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

Τώρα μπορώ να χρησιμοποιήσω αυτήν τη μεταβλητή στο φίλτρο για να Get-ADComputer:

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -ιδιότητα * | Επιλέξτε Όνομα,LastlogonTimestamp,PasswordLastSet

Ο παραπάνω κώδικας βρίσκει τους ίδιους υπολογιστές που φαίνονται στο Σχήμα 5.

Εργασία 9: Απενεργοποιήστε τον λογαριασμό υπολογιστή

Ίσως όταν βρείτε ανενεργούς ή παλιούς λογαριασμούς, να θέλετε να τους απενεργοποιήσετε. Αυτό είναι αρκετά εύκολο να γίνει. Θα χρησιμοποιήσουμε το ίδιο cmdlet που χρησιμοποιούσαμε για να δουλέψουμε με λογαριασμούς χρηστών. Μπορείτε να το διευκρινίσετε χρησιμοποιώντας SamAccountnameλογαριασμός.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif Τι κι αν: Εκτέλεση της λειτουργίας "Set" στον στόχο "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Ή χρησιμοποιώντας μια έκφραση διοχέτευσης:

PS C:\> get-adcomputer "chi-srv01" | Απενεργοποίηση λογαριασμού ADA

Μπορώ επίσης να χρησιμοποιήσω τον κωδικό μου για να βρω παλιούς λογαριασμούς και να τους απενεργοποιήσω όλους:

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -ιδιότητες *| Απενεργοποίηση λογαριασμού ADA

Εργασία 10: Βρείτε υπολογιστές ανά τύπο

Επίσης, συχνά με ρωτούν πώς να βρίσκω λογαριασμούς υπολογιστών ανά τύπο, όπως διακομιστές ή σταθμούς εργασίας. Αυτό απαιτεί κάποια δημιουργικότητα από την πλευρά σας. Δεν υπάρχει τίποτα στο AD που να διακρίνει έναν διακομιστή από έναν πελάτη, εκτός ίσως από το λειτουργικό σύστημα. Εάν ο υπολογιστής σας εκτελεί Windows Server 2008, θα πρέπει να κάνετε μερικά επιπλέον βήματα.
Πρώτα, πρέπει να λάβετε μια λίστα με λειτουργικά συστήματα και, στη συνέχεια, φιλτράρουμε τους λογαριασμούς κατά διαθέσιμα λειτουργικά συστήματα.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Επιλέξτε OperatingSystem -unique | Ταξινόμηση Λειτουργικού Συστήματος

Τα αποτελέσματα φαίνονται στο Σχήμα 7.


Ρύζι. 7. Ανάκτηση της λίστας OS

Θέλω να βρω όλους τους υπολογιστές που εκτελούν λειτουργικό σύστημα διακομιστή:

PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | Επιλέξτε Όνομα,Επ* | μορφή-λίστα

Τα αποτελέσματα φαίνονται στο Σχήμα 8.

Όπως και άλλα cmdlet AD Get, μπορείτε να προσαρμόσετε τις παραμέτρους αναζήτησης και να περιορίσετε το αίτημα σε συγκεκριμένα OU, εάν είναι απαραίτητο. Όλες οι εκφράσεις που έχω δείξει μπορούν να ενσωματωθούν σε μεγαλύτερες εκφράσεις PowerShell. Για παράδειγμα, μπορείτε να ταξινομήσετε, να ομαδοποιήσετε, να εφαρμόσετε φίλτρα, να εξαγάγετε σε CSV ή να δημιουργήσετε και να στείλετε email αναφορές HTML - όλα από το PowerShell! Σε αυτήν την περίπτωση, δεν θα χρειαστεί να γράψετε ούτε ένα σενάριο.
Ακολουθεί ένα μπόνους: μια αναφορά ηλικίας κωδικού πρόσβασης χρήστη, αποθηκευμένη σε αρχείο HTML:

PS C:\> Get-ADUser -Φίλτρο "Ενεργοποιημένο -eq "True" -AND PasswordNeverExpires -eq "False"" -Ιδιότητες PasswordLastSet,PasswordNeverExpires,PasswordExpired | Επιλέξτε DistinguishedName,Name,pass*,@(Name="PasswordAge"; Expression=((Get-Date)-$_.PasswordLastSet)) |ταξινόμηση PasswordAge -Φθίνουσα | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm !}

Αν και αυτή η έκφραση μπορεί να φαίνεται λίγο τρομακτική, είναι εύκολη στη χρήση με ελάχιστη γνώση του PowerShell. Και απομένει μόνο μια τελευταία συμβουλή: πώς να ορίσετε μια προσαρμοσμένη ιδιότητα που ονομάζεται PasswordAge. Η τιμή αντιπροσωπεύει το κενό μεταξύ του σήμερα και της ιδιότητας PasswordLastSet. Στη συνέχεια ταξινομώ τα αποτελέσματα για τη νέα μου ιδιοκτησία. Το σχήμα 9 δείχνει την έξοδο για τον μικρό δοκιμαστικό μου τομέα.

Ενημέρωση:
Η ανάρτηση περιέχει μετάφραση του άρθρου στην πύλη

0

Έχω το ακόλουθο σενάριο εργασίας που ελέγχει εάν μια μεγάλη λίστα χρηστών σε ένα αρχείο CSV είναι μέλος μιας ομάδας AD και εγγράφει τα αποτελέσματα στο results.csv.

Δεν είμαι σίγουρος πώς να μετατρέψω το σενάριο, ώστε να μπορώ να αλλάξω $group = "InfraLite" σε $group = DC .\List_Of_AD_Groups.CSV .

Έτσι, το σενάριο δεν επιστρέφει απλώς αντιστοιχίσεις για μια ομάδα AD, αλλά επιστρέφει αντιστοιχίσεις για τις 80 ομάδες AD που περιέχονται στο List_of_AD_groups.csv. Η εγγραφή ΝΑΙ/ΟΧΙ για κάθε ομάδα διαφημίσεων σε μια νέα στήλη CSV (ή αν αυτό δεν είναι δυνατό, η δημιουργία ενός ξεχωριστού αρχείου CSV για κάθε ομάδα με τα αποτελέσματα θα κάνει το ίδιο.

Θα μπορούσα να το κάνω χειροκίνητα αλλάζοντας την τιμή από την ομάδα $ και το όνομα του αρχείου εξαγωγής και εκτελώντας ξανά το σενάριο 80 φορές, αλλά θα έπρεπε να το κάνω γρήγορα με το PS για να το κάνω αυτό

για παράδειγμα results.csv?:

ΟΝΟΜΑ AD_GROUP1 AD_GROUP2 AD_GROUP80 κ.λπ. χρήστη1 ναι όχι ναι χρήστη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 ) | Εξαγωγή-Csv "C:\user_group_mapping.csv" -NoType

0

Παίζω με αυτό εδώ και λίγο καιρό και νομίζω ότι βρήκα έναν τρόπο να σου κάνω αυτό ακριβώς που ήθελες.

Νομίζω ότι ο Ansgar ήταν στο σωστό δρόμο, αλλά δεν κατάφερα να κάνω αυτό που ακολούθησε. Ανέφερε ότι τη στιγμή της σύνταξης δεν είχε πρόσβαση στο περιβάλλον 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 # Outer loop για προσθήκη χρηστών και ιδιότητας μέλους στο UserHash $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Ιδιότητες MemberOf # Απογυμνώνει τη σύνταξη LPAP μόνο στο όνομα λογαριασμού SAMA της ομάδας $Memberships = $UserInfo.MemberOf | ForEach-Object( ($_.Split(",")) .replace("CN=","") ) #Προσθήκη του ζεύγους User=Membership στο Hash $UserHash.Add($_,$Memberships) ) #Outer loop για τη δημιουργία ενός αντικειμένου ανά χρήστη $Results = $UserArray | ForEach-Object( # Πρώτα δημιουργήστε ένα απλό αντικείμενο $User = New-Object -TypeName PSCustomObject -Property @( Name = $_ ) # Προσθέστε δυναμικά μέλη στο αντικείμενο, με βάση το $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash για να δείτε αν η ομάδα εμφανίζεται στη λίστα μελών του χρήστη $UserIsMember = $UserHash.($User.Name) -contains $_ #Προσθήκη ιδιότητας στο αντικείμενο και τιμή $User | Add-Member -MemberType NoteProperty -Name $ _ -Τιμή $UserIsMember ) #Επιστροφή του αντικειμένου στη μεταβλητή Return $User ) #Μετατρέψτε τα αντικείμενα σε ένα CSV και μετά εξάγετε τα $Αποτελέσματα |

Ας ελπίσουμε ότι όλα έχουν νόημα. Σχολίασα όσο μπορούσα. Θα ήταν πολύ εύκολο να μετατραπεί σε ADSI εάν δεν είχατε εγκατεστημένο το RSAT σε οποιοδήποτε μηχάνημα το χρησιμοποιείτε. Εάν το χρειάζεστε, ενημερώστε με και θα κάνω κάποιες γρήγορες αλλαγές.

Χρησιμοποιείται για τη δημιουργία, τροποποίηση και διαγραφή αντικειμένων καταλόγου. Ο χρήστης μπορεί επίσης να χρησιμοποιήσει την εντολή ldifdeγια να επεκτείνετε το σχήμα, να εξάγετε πληροφορίες χρήστη και ομάδας Active Directory σε άλλες εφαρμογές ή υπηρεσίες και να συμπληρώσετε την υπηρεσία ADAM (Active Directory Application Mode) με δεδομένα από άλλες υπηρεσίες καταλόγου.

Σύνταξη

ldifde [-Εγώ] [-φά όνομα αρχείου] [-μικρό όνομα διακομιστή] [-ντο γραμμή 1 γραμμή 2] [-v] [-j μονοπάτι] [ αριθμός θύρας] [-ρε DN_base] [-r filter_LDAP] [ περιοχή] [-μεγάλο Λίστα_χαρακτηριστικών LDAP] [-ο Λίστα_χαρακτηριστικών LDAP] [-σολ] [] [-n] [] [-ένα ] [-σι ] [-? ]

Επιλογές

-Εγώ Καθορίζει τη λειτουργία εισαγωγής. Εάν η παράμετρος δεν έχει οριστεί, η λειτουργία εξαγωγής χρησιμοποιείται από προεπιλογή. -φάόνομα αρχείου Καθορίζει το όνομα του αρχείου εισαγωγής ή εξαγωγής. -μικρόόνομα διακομιστή Καθορίζει τον υπολογιστή στον οποίο θα πρέπει να εκτελεστεί η λειτουργία εισαγωγής ή εξαγωγής. Προεπιλεγμένο πρόγραμμα ldifdeθα εκτελεστεί στον υπολογιστή στον οποίο ldifdeεγκατασταθεί. -ντογραμμή 1 γραμμή 2 Αντικαθιστά όλες τις εμφανίσεις γραμμές 1περιεχόμενο γραμμές 2. Συνήθως χρησιμοποιείται όταν εισάγετε δεδομένα από έναν τομέα σε άλλο και πρέπει να αντικαταστήσετε το διακριτικό όνομα του τομέα που πραγματοποιεί την εξαγωγή ( γραμμή 1), εισαγωγή ονόματος τομέα ( γραμμή 2). -v Ενεργοποιεί τη λειτουργία λεπτομερούς καταγραφής. -jμονοπάτι Καθορίζει τη θέση του αρχείου καταγραφής. Η προεπιλογή είναι η τρέχουσα διαδρομή. αριθμός θύρας Καθορίζει τον αριθμό θύρας Lightweight Directory Access Protocol (LDAP). Η προεπιλεγμένη θύρα LDAP είναι 389. Η θύρα καθολικού καταλόγου είναι 3268. -ρεDN_base Καθορίζει το διακεκριμένο όνομα βάσης αναζήτησης για την εξαγωγή δεδομένων. -rΦίλτρο LDAP Δημιουργεί ένα φίλτρο αναζήτησης LDAP για εξαγωγή δεδομένων. Για παράδειγμα, το ακόλουθο φίλτρο εξάγει όλους τους χρήστες με συγκεκριμένο μεσαίο όνομα: csvde -r (και(objectClass=Χρήστης)(sn=Επώνυμο)) περιοχή Καθορίζει την περιοχή αναζήτησης. Οι παράμετροι του εύρους αναζήτησης είναι Βάση, OneLevelΚαι Υποδέντρο. -μεγάλοΛίστα_χαρακτηριστικών LDAP Καθορίζει τη λίστα των χαρακτηριστικών που επιστρέφονται στα αποτελέσματα του αιτήματος εξαγωγής. Εάν παραληφθεί αυτή η παράμετρος, επιστρέφονται όλα τα χαρακτηριστικά. -οΛίστα_χαρακτηριστικών LDAP Καθορίζει μια λίστα χαρακτηριστικών που πρέπει να παραλειφθούν από τα αποτελέσματα του αιτήματος εξαγωγής. Αυτή η επιλογή χρησιμοποιείται συνήθως κατά την εξαγωγή αντικειμένων από την υπηρεσία καταλόγου Active Directory και στη συνέχεια την εισαγωγή τους σε έναν άλλο κατάλογο συμβατό με LDAP. Εάν κάποια χαρακτηριστικά δεν υποστηρίζονται από άλλον κατάλογο, μπορούν να εξαιρεθούν από το σύνολο αποτελεσμάτων χρησιμοποιώντας αυτήν την επιλογή. -σολ Καταργεί τις αναζητήσεις σελίδων. Παραλείπει χαρακτηριστικά που δεν μπορούν να γραφτούν, όπως π.χ ObjectGUIDΚαι objectSID. -n Παραλείπει την εξαγωγή δυαδικών τιμών. Αγνοεί σφάλματα κατά τη λειτουργία εισαγωγής και συνεχίζει την επεξεργασία. Παρακάτω είναι μια πλήρης λίστα σφαλμάτων που αγνοήθηκαν:

  • το αντικείμενο είναι ήδη μέλος της ομάδας.
  • παραβίαση κλάσης αντικειμένου (που σημαίνει ότι η καθορισμένη κλάση αντικειμένου δεν υπάρχει) εάν το εισαγόμενο αντικείμενο δεν έχει άλλα χαρακτηριστικά.
  • το αντικείμενο υπάρχει ήδη.
  • παραβίαση του περιορισμού·
  • το χαρακτηριστικό ή η τιμή υπάρχει ήδη.
  • δεν υπάρχει τέτοιο αντικείμενο.
-έναδιακεκριμένο_όνομα_κωδικός πρόσβασης Καθορίζει την εκτέλεση μιας εντολής χρησιμοποιώντας το καθορισμένο διακεκριμένο_όνομα_όνομα_χρήστηΚαι Κωδικός πρόσβασης -σι. -σιόνομα χρήστη κωδικός πρόσβασης τομέα Καθορίζει την εντολή που θα εκτελεστεί χρησιμοποιώντας το καθορισμένο όνομα χρήστη, τομέας και κωδικός πρόσβασης. Από προεπιλογή, η εντολή θα εκτελεστεί χρησιμοποιώντας τα διαπιστευτήρια του χρήστη που είναι συνδεδεμένος αυτήν τη στιγμή στο δίκτυο. Δεν μπορεί να χρησιμοποιηθεί με παράμετρο -ένα. -? Εμφανίζει ένα μενού εντολών.

Σημειώσεις

  • Με παράμετρο -ντομπορείτε να χρησιμοποιήσετε σταθερές #schemaNamingContextΚαι #configurationNamingContextαντί για τα διακριτικά ονόματα του διαμερίσματος καταλόγου σχήματος και του διαμερίσματος καταλόγου διαμόρφωσης.
  • Κατά τη δημιουργία ενός αρχείου εισαγωγής για μια εντολή ldifde, χρησιμοποιήστε την τιμή αλλαγή Τύπουγια να προσδιορίσετε τον τύπο των αλλαγών που περιέχονται στο αρχείο εισαγωγής. Αξίες αλλαγή Τύπουδίνονται στον παρακάτω πίνακα.

Παρακάτω είναι ένα παράδειγμα αρχείου εισαγωγής LDAP σε μορφή LDIF που χρησιμοποιεί την τιμή Προσθήκη:
DN: CN=επιλεγμένος_χρήστης,DC=όνομα τομέα
αλλαγή τύπου: Προσθήκη
ΣΟ: επιλεγμένος_χρήστης
περιγραφή:Περιγραφή Αρχείου
objectClass: χρήστης
objectClass: επιλεγμένος_χρήστης

Παραδείγματα

Για να εξαγάγετε μόνο το διακεκριμένο όνομα, το κοινό όνομα, το όνομα, το επώνυμο και τον αριθμό τηλεφώνου των αντικειμένων που επιστρέφονται, εισαγάγετε:
-μεγάλο διακεκριμένο όνομα, ΣΟ, Ονομα, SN, τηλέφωνο
Για να εξαιρέσετε ένα καθολικά μοναδικό αναγνωριστικό (GUID) για ένα αντικείμενο, εισαγάγετε:
-ο όταν_δημιουργήθηκε, όταν_άλλαξε, αντικείμενο_GUID

Δεν είναι μυστικό ότι από την πρώτη έκδοση του PowerShell, η Microsoft προσπαθεί να το κάνει το κύριο εργαλείο διαχείρισης των Windows. Και από πολλές απόψεις τα καταφέρνει! Σήμερα, χρησιμοποιώντας απλά παραδείγματα, θα δείξουμε τις δυνατότητες του PowerShell που μπορούν να χρησιμοποιηθούν για τη λήψη διαφόρων πληροφοριών σχετικά με τους χρήστες της υπηρεσίας καταλόγου Active Directory και τα χαρακτηριστικά τους.

Σημείωση. Προηγουμένως, για να λάβετε πληροφορίες σχετικά με τα χαρακτηριστικά των λογαριασμών χρηστών AD, έπρεπε να χρησιμοποιήσετε διάφορα εργαλεία: την κονσόλα ADUC (συμπεριλαμβανομένου), ένα βοηθητικό πρόγραμμα κ.λπ. Η επιλογή του εργαλείου βασιζόταν συνήθως στην εργασία και στις προγραμματιστικές ικανότητες του διαχειριστή.

Το PowerShell 2.0 εισήγαγε μια ειδική ενότητα για εργασία με την υπηρεσία καταλόγου Active Directory - (που εισήχθη στον Windows Server 2008 R2), της οποίας τα cmdlet σας επιτρέπουν να εκτελείτε διάφορους χειρισμούς με αντικείμενα καταλόγου AD. Το cmdlet χρησιμοποιείται για τη λήψη πληροφοριών σχετικά με τους χρήστες του τομέα Active Directory και τις ιδιότητές τους Get-ADUser. Μπορείτε να χρησιμοποιήσετε το cmdlet Get-ADUser για να λάβετε την τιμή οποιουδήποτε χαρακτηριστικού ενός υπάρχοντος λογαριασμού χρήστη στο AD. Επιπλέον, μπορείτε να καθορίσετε διάφορα κριτήρια επιλογής και να δημιουργήσετε λίστες χρηστών τομέα και τα χαρακτηριστικά τους.

Σε αυτό το παράδειγμα, θα σας δείξουμε πώς να χρησιμοποιήσετε το cmdlet PowerShell Get-ADUser για να ανακτήσετε πληροφορίες σχετικά με το πότε άλλαξε τελευταία φορά ο κωδικός πρόσβασης ενός χρήστη και πότε λήγει.

Εκκινήστε το παράθυρο Powershll με δικαιώματα διαχειριστή και εισαγάγετε τη μονάδα Active Directory με την εντολή:

Εισαγωγή-Μονάδα ενεργού καταλόγου

Συμβουλή. Στον Windows Server 2012 και νεότερη έκδοση, μπορείτε να παραλείψετε αυτό το στοιχείο, καθώς η λειτουργική μονάδα Active Directory του PowerShell είναι ενεργοποιημένη από προεπιλογή.

Στα λειτουργικά συστήματα-πελάτες (Windows 10 για παράδειγμα), για να λειτουργήσει η εντολή Get-AdUser, πρέπει να εγκαταστήσετε την κατάλληλη έκδοση του RSAT και να ενεργοποιήσετε το στοιχείο στον πίνακα ελέγχου Ενότητα Active Directory για Windows PowerShell(Εργαλεία διαχείρισης απομακρυσμένου διακομιστή -> Εργαλεία διαχείρισης ρόλων -> Εργαλεία AD DS και AD LDS -> Εργαλεία AD DS).

Μια πλήρης λίστα με όλα τα ορίσματα cmdlet Get-ADUser μπορεί να ληφθεί ως εξής:

Βοήθεια Get-ADUser

Για να εμφανίσετε μια λίστα με όλους τους λογαριασμούς τομέα, εκτελέστε την εντολή:

Get-ADUser -φίλτρο *

Η μορφή της λίστας που επιστρέφεται δεν είναι πολύ βολική στη χρήση, εμφανίζονται μόνο μερικά βασικά 10 από τα περισσότερα από 120 χαρακτηριστικά και ιδιότητες των λογαριασμών χρηστών (DN, SamAccountName, Name, UPN, κ.λπ.) επιπλέον, βλέπουμε ότι υπάρχει δεν υπάρχουν πληροφορίες σχετικά με την ώρα της τελευταίας αλλαγής κωδικού πρόσβασης.

Για να εμφανίσετε πλήρεις πληροφορίες σχετικά με όλα τα διαθέσιμα χαρακτηριστικά του δέκτη χρήστη, εκτελέστε την εντολή:

Get-ADUser -tudser ταυτότητας -ιδιότητες *

Έτσι, βλέπουμε μια πλήρη λίστα με τα χαρακτηριστικά χρήστη AD και τις τιμές τους που σχετίζονται με τον λογαριασμό χρήστη. Στη συνέχεια, θα προχωρήσουμε στη μορφοποίηση της εξόδου του cmdlet Get-ADUser έτσι ώστε να εμφανίζονται τα πεδία που χρειαζόμαστε. Μας ενδιαφέρουν τα χαρακτηριστικά:

  • Ο κωδικός έχει λήξει
  • PasswordLastSet
  • PasswordNeverExpires

Ας εκτελέσουμε την εντολή:

Get-ADUser tuser -ιδιότητες PasswordExpired, PasswordLastSet, PasswordNeverExpires

Τώρα τα δεδομένα χρήστη περιέχουν πληροφορίες σχετικά με την ημερομηνία αλλαγής κωδικού πρόσβασης και την ώρα που θα λήξει. Ας παρουσιάσουμε τις πληροφορίες σε πιο βολική μορφή πίνακα:

Get-ADUser -φίλτρο * -ιδιότητες PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Όνομα, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Για να εμφανίσετε δεδομένα χρήστη από ένα συγκεκριμένο OU, χρησιμοποιήστε την παράμετρο SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -φίλτρο * -ιδιότητες PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Όνομα, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Το αποτέλεσμα της εντολής μπορεί να εξαχθεί σε ένα αρχείο κειμένου:

Get-ADUser -φίλτρο * -ιδιότητες PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Όνομα, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Ή σε CSV, το οποίο θα εξαχθεί βολικά στο Excel στο μέλλον (επιπλέον χρήση ταξινόμηση-αντικείμενοΑς ταξινομήσουμε τον πίνακα κατά τη στήλη PasswordLastSet και ας προσθέσουμε επίσης μια συνθήκη που– το όνομα χρήστη πρέπει να περιέχει τη συμβολοσειρά "Dmitry"):

Get-ADUser -φίλτρο * -ιδιότητες PasswordExpired, PasswordLastSet, PasswordNeverExpires | όπου ($_.name –όπως "*Dmitry*") | sort-object PasswordLastSet | select-object Όνομα, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2015.csv

Έτσι, μπορείτε να δημιουργήσετε έναν πίνακα με οποιαδήποτε απαραίτητα χαρακτηριστικά χρήστη Active Directory.

Για να αποκτήσετε μια λίστα λογαριασμών χρηστών AD με βάση ένα συγκεκριμένο χαρακτηριστικό, χρησιμοποιήστε την παράμετρο –Filter. Ως ορίσματα σε αυτήν την παράμετρο, μπορείτε να καθορίσετε την τιμή ορισμένων χαρακτηριστικών χρήστη της υπηρεσίας καταλόγου Active Directory, γεγονός που θα προκαλέσει την εφαρμογή του cmdlet Get-ADUser σε χρήστες που ταιριάζουν με τα κριτήρια φίλτρου.

Έξοδος χρηστών AD των οποίων το όνομα αρχίζει με Roman:

Get-ADUser -φίλτρο (όνομα -όπως "Roman*")

Get-ADUser -Filter (SamAccountName -όπως "*") | Μέτρο-Αντικείμενο

Λίστα όλων των ενεργών (μη αποκλεισμένων) λογαριασμών στο AD:

Get-ADUser -Filter (Ενεργοποιημένο -eq "True") | Select-Object SamAccountName,Name,Surname,GivenName | Μορφή-Πίνακας

Λίστα λογαριασμών με ληγμένο κωδικό πρόσβασης:

Get-ADUser -φίλτρο (Ενεργοποιημένο -eq $True) -ιδιότητες κωδικός πρόσβασης Έληξε | where($_.PasswordExpired)

Λίστα ενεργών λογαριασμών με διευθύνσεις email:

Get-ADUser -Filter ((mail -ne "null") -and (Enabled -eq "true")) -Ιδιότητες Επώνυμο,GivenName,mail | Επιλογή-Όνομα αντικειμένου, Επώνυμο, Όνομα, ταχυδρομείο | Μορφή-Πίνακας

Εργασία: για μια λίστα λογαριασμών που είναι αποθηκευμένοι σε ένα αρχείο κειμένου (ένας λογαριασμός ανά γραμμή), πρέπει να λάβετε τον αριθμό τηλεφώνου του χρήστη στο AD και να ανεβάσετε τις πληροφορίες σε ένα αρχείο csv κειμένου (μπορεί εύκολα να εισαχθεί στο Esxel).

Εισαγωγή-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identity $_.user -Properties Όνομα, αριθμός τηλεφώνου | Επιλέξτε Όνομα, αριθμός τηλεφώνου | 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")) -Ιδιότητες Επώνυμο,GivenName,mail | Επιλογή-Όνομα αντικειμένου, Επώνυμο, Όνομα, ταχυδρομείο | 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 -Ιδιότητες thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Κωδικοποίηση byte

Λίστα ομάδων στις οποίες ανήκει ο λογαριασμός χρήστη

Get-AdUser winadmin -Ιδιότητες μέλοςof | Επιλέξτε μέλοςof -expandproperty Memberof



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: