Etsi passiivisia käyttäjiä Active Directorysta. Get-ADUserin käyttö erilaisten tietojen hankkimiseen AD-toimialueen käyttäjistä

Edellisen artikkelin kommenteissa muistimme kirjanpidon Excelissä 1C:n sijaan. No, katsotaan kuinka paljon tunnet Excelin. Tänään näytän sinulle kuinka saada tietoja Active Directorysta ja työskennellä sen kanssa ilman makroja ja PowerShellia - vain tavallisilla Office-mekanismeilla. Voit esimerkiksi helposti saada analytiikkaa käyttöjärjestelmän käytöstä organisaatiossasi, jos sinulla ei vielä ole Microsoft SCOM:n kaltaista. No, tai vain lämmittele ja ota ajatuksesi pois käsikirjoituksista.


Tietenkin voit saada tiedot kuten alla olevissa esimerkeissä kirjaimellisesti yhdellä rivillä PowerShellissä. Mutta ensinnäkin PowerShell on liian tylsä, ja toiseksi Excel voi päivittää tietoja dynaamisesti - tuloksena olevat asiakirjat voidaan julkaista verkossa ja unohtaa niiden päivittäminen.

Tietojen käsittelyyn käytän Power Query -mekanismia. Office 2010 ja 2013 varten sinun on asennettava laajennus Microsoft Office 2016:ssa on jo sisäänrakennettu tämä moduuli. Valitettavasti standardiversio ei riitä meille, tarvitsemme Professionalin.


Itse mekanismi on suunniteltu vastaanottamaan ja käsittelemään tietoja useista eri lähteistä - vanhoista ODBC- ja tekstitiedostoista Exchangeen, Oracleen ja Facebookiin. Lisätietoa mekanismista ja sisäänrakennetusta komentosarjakielestä "M" on jo kirjoitettu Habrelle, mutta katson pari esimerkkiä Power Queryn käyttämisestä tietojen hankkimiseen Active Directorysta.

Alkulämmittely: Katsotaan, milloin käyttäjämme kirjautuivat sisään

Pyyntö verkkotunnuksen tietokantaan luodaan välilehdellä "Tiedot ― Uusi pyyntö ― muista lähteistä ― Active Directorysta".



Määritä tietolähde.


Sinun on valittava verkkotunnus ja annettava tarvittavat yhteystiedot. Valitse seuraavaksi objektien tyyppi, tässä esimerkissä - käyttäjä. Esikatseluikkunan oikealla puolella kysely on jo käynnissä ja näyttää esikatselun tiedoista.



Valmistelemme pyynnön ja ihailemme esikatselua.


Sinun tulee valmistella pyyntö etukäteen napsauttamalla "muokkaa"-painiketta ja valitsemalla tarvittavat sarakkeet. Pohjimmiltaan nämä sarakkeet ovat luokkia, joista jokainen sisältää pääsaraketta lukuun ottamatta joukon Active Directory -objektin määritteitä näyttönimi, joka itsessään on attribuutti. Keskityn luokkiin käyttäjä, henkilö, alkuun Ja turvallisuuspäällikkö. Nyt sinun on valittava tarvittavat attribuutit jokaisesta luokasta käyttämällä "laajennusta" - kuvaketta, jossa on kaksi nuolta sarakkeen otsikossa:

  • Luokka käyttäjä laajentaa valitsemalla lastLogonTimestamp Ja userAccountControl;
  • V henkilö valitaan puhelinnumero;
  • V alkuunkunLuotu;
  • ja sisään turvallisuuspäällikköSamAccountName.


Laajennamme pyyntöä.


Asetetaan nyt suodatin: jotta et saa estettyjä tilejä, userAccountControl-attribuutin arvon on oltava 512 tai 66048. Suodatin voi olla erilainen ympäristössäsi. Voit lukea lisää attribuutista Microsoftin dokumentaatiosta.



Suodattimen käyttö.


Joskus Excel havaitsee virheellisesti tietomuodon, erityisesti lastLogonTimestamp-attribuutin arvon. Jos tällainen onnettomuus sattuu yhtäkkiä, voit asettaa oikean muodon "Muunna" -välilehdellä.

Nyt userAccountControl-sarake pitäisi poistaa - sitä ei tarvita näytössä ollenkaan. Ja napsauta "Lataa ja sulje".


Tuloksena on lautanen, joka tarvitsee vain vähän viimeistelyä. Nimeä esimerkiksi sarakkeet uudelleen luettavammaksi. Ja määritä automaattinen tietojen päivitys.


Automaattinen päivitys taulukkoa avattaessa tai aikakatkaisun jälkeen on määritetty "Ominaisuudet"-kohdan "Data"-välilehdellä.



Asetetaan tietojen päivitystä.


Kun päivityksen asetukset on tehty, voit turvallisesti luovuttaa taulukon henkilöstöosastolle tai turvapalvelulle – ilmoittaa heille kuka kirjautui järjestelmään ja milloin.


Pyyntökoodi "M"-kielellä on spoilerin alla.

anna Lähde = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Objekoluokat"], user1 = domain.ru(), #"Remote Columns" = Table.RemoveColumns(user1,() "organisationalPerson", "shadowAccount", "posixAccount", "msExchOmaUser", "msExchBaseClass", "msExchIMRecipient", "msExchCertificateInformation", "msExchMultiMediaUser", "msExchMailStorage", "msExchCustomRecipient", ")distinguRecipient", "") #"Expanded element securityPrincipal" = Table.ExpandRecordColumn(#"Poistetut sarakkeet", "securityPrincipal", ("sAMAccountName"), ("sAMAccountName")), #"Expanded element top" = Table.ExpandRecordColumn(#"Expanded element securityPrincipal ", "top", ("whenCreated"), ("whenCreated")), #"Expanded element person" = Table.ExpandRecordColumn(#"Laajennettu elementti top", "person", ("telephoneNumber"), ("telephoneNumber" ")), #"Expanded element user" = Table.ExpandRecordColumn(#"Expanded element person", "user", ("lastLogonTimestamp", "userAccountControl"), ("lastLogonTimestamp", "userAccountControl")), #"Rivit with filter used" = Table.SelectRows(#"Laajennettu käyttäjäelementti", kukin ( = 512 tai = 66048)), #"Changed type" = Table.TransformColumnTypes(#"Rivit, joissa suodatin on käytössä",(("lastLogonTimestamp", kirjoita datetime))), #"Remoted columns1" = Table.RemoveColumns(#"Changed type",("userAccountControl")) in #"Remoted columns1"

Osoitekirjan luominen tai mitä tehdä, kun yritysportaali ei ole ystävällinen AD:n kanssa

Toinen vaihtoehto Excelin käyttämiseen Active Directoryn kanssa on luoda osoitekirja AD-tietojen perusteella. On selvää, että osoitekirja on ajan tasalla vain, jos verkkotunnus on kunnossa.


Luodaan objektia koskeva pyyntö käyttäjä, laajentaa luokkaa käyttäjä V postia, ja luokka henkilö V puhelinnumero. Poistetaan kaikki sarakkeet paitsi erottuvaNimi― domain-rakenne toistaa yrityksen rakenteen, eli nimet Organisaatioyksiköt vastaavat osastojen nimiä. Vastaavasti tietoturvaryhmiä voidaan käyttää osastonnimien perustana.


Nyt linjalta CN=käyttäjänimi, OU=kirjanpitoosasto, OU=osastot, DC=verkkotunnus, DC=ru sinun on purettava osaston nimi suoraan. Helpoin tapa tehdä tämä on käyttää Muunna-välilehden erottimia.



Tekstin purkaminen.


Käytän erottimina OU= Ja ,OU=. Periaatteessa pilkku riittää, mutta pelaan varman päälle.



Syötä erottimet.


Nyt suodattimen avulla voit katkaista tarpeettomat OU, kuten estetyt käyttäjät ja sisäänrakennettu, määritä lajittelu ja lataa tiedot taulukkoon.



Näkymä yhteenvetotaulukosta.

Nopea raportti työasemien koostumuksesta ilman aineita tai muita valmisteluja

Yritetään nyt luoda hyödyllinen taulukko hankkimalla tietoja tietokoneista. Tehdään raportti yrityksen käyttämistä käyttöjärjestelmistä: tätä varten luomme pyynnön, mutta tällä kertaa valitsemme navigaattorissa tietokone.



Teemme pyynnön tietokoneobjektista.


Jätetään sarakeluokat tietokone Ja alkuun ja laajentaa niitä:

  • Luokka tietokone laajentaa valitsemalla cn, käyttöjärjestelmä, operationSystemServicePack Ja käyttöjärjestelmän versio;
  • luokassa alkuun valitaan kunLuotu.


Edistynyt pyyntö.


Halutessasi voit tehdä raportin vain palvelinkäyttöjärjestelmistä. Suodata esimerkiksi operationSystem- tai operationSystemVersion-attribuutin mukaan. En tee tätä, mutta korjaan luomisajan näyttöä - minua kiinnostaa vain vuosi. Voit tehdä tämän valitsemalla "Konversio"-välilehdellä tarvitsemamme sarakkeen ja valitsemalla "Päivämäärä"-valikosta "Vuosi".



Poimimme vuoden siitä, kun tietokone tuli verkkotunnukseen.


Nyt ei jää muuta kuin poistaa näyttönimisarake tarpeettomana ja ladata tulos. Data on valmis. Nyt voit työskennellä niiden kanssa kuin tavallisen pöydän kanssa. Luodaan ensin pivot-taulukko "Lisää" - "Pivot-taulukko" -välilehdelle. Sovitaan tietolähteen valinta ja määritetään sen kentät.



Pivot-taulukon kenttäasetukset.


Nyt ei jää muuta kuin mukauttaa mallia makusi mukaan ja ihailla tulosta:



Yhteenvetotaulukko AD:n tietokoneille.


Voit halutessasi lisätä yhteenvetokaavion, myös "Lisää"-välilehdelle. Lisää kategoriaan (tai riviin maun mukaan). käyttöjärjestelmä, dataan ― cn. Suunnittelu-välilehdellä voit valita haluamasi kaavion.



Ympyrädiagrammi.


Nyt on selvästi nähtävissä, että käynnissä olevasta päivityksestä huolimatta Windows XP -työasemien ja Windows 2003 -palvelimien kokonaismäärä on melko suuri. Ja on jotain, mihin pyrkiä.


Pyyntökoodi on spoilerin alla.

anna Lähde = ActiveDirectory.Domains("domain.ru"), domain.ru = Source()[#"Object Categories"], tietokone1 = domain.ru(), #"Remote Columns" = Taulukko.PoistaSarakkeet(tietokone1,( "user", "organisationalPerson", "person")), #"Muut poistetut sarakkeet" = Table.SelectColumns(#"Remoted columns",("displayName", "computer", "top")), #"Laajenna kohde computer" = Table.ExpandRecordColumn(#"Muut etäsarakkeet", "tietokone", ("cn", "operatingSystem", "operatingSystemServicePack", "operatingSystemVersion"), ("cn", "operatingSystem", "operatingSystemServicePack", " operationSystemVersion")), #"Extended top" = Table.ExpandRecordColumn(#"Laajennettu tietokone", "top", ("whenCreated"), ("whenCreated")), #"Extracted year" = Table.TransformColumns( #" Expanded element top",(("whenCreated", Date.Year))), #"Remoted columns1" = Table.RemoveColumns(#"Extracted year",("displayName")) in #"Remoted columns1"

Lisää tageja

0

Minulla on seuraava työskripti, joka tarkistaa, onko suuri CSV-tiedoston käyttäjäluettelo AD-ryhmän jäsen, ja kirjoittaa tulokset results.csv-tiedostoon.

En ole varma, kuinka komentosarja muunnetaan, jotta voin muuttaa $group = "InfraLite" arvoksi $group = DC .\List_Of_AD_Groups.CSV .

Joten komentosarja ei vain palauta osumia yhdelle AD-ryhmälle, vaan se palauttaa osumia 80 AD-ryhmälle, jotka sisältyvät List_of_AD_groups.csv-tiedostoon. Kirjoita KYLLÄ/EI kullekin AD-ryhmälle uuteen CSV-sarakkeeseen (tai jos tämä ei ole mahdollista, erillisen CSV-tiedoston luominen jokaiselle ryhmälle tuloksilla tekee samoin.

Voisin tehdä tämän manuaalisesti muuttamalla $group-arvon ja vientitiedoston nimen ja suorittamalla komentosarjan uudelleen 80 kertaa, mutta minun on oltava nopea PS:n kanssa tehdäksesi tämän

esimerkiksi tulokset.csv?:

NIMI AD_GROUP1 AD_GROUP2 AD_GROUP80 jne. käyttäjä1 kyllä ​​ei kyllä ​​käyttäjä2 ei ei kyllä ​​käyttäjä3 ei kyllä ​​ei kaiku "Käyttäjänimi`InfraLite" >> tulokset.csv $users = GC .\user_list.csv $group = "InfraLite" $members = Hanki-ADGroupMember -Identity $group -Rekursiivinen | Valitse -ExpandProperty SAMAccountName foreach ($user in $users) ( if ($members -contains $user) ( echo "$user $group`tYes" >> results.csv ) else ( echo "$user`tNo" >> tulokset .csv) )

  • 2 vastausta
  • Lajittelu:

    Toiminta

0

Triviaali ratkaisu ongelmaasi olisi kääriä olemassa oleva koodi toiseen silmukkaan ja luoda tulostiedosto jokaiselle ryhmälle:

$groups = Get-Content "C:\groups.txt" foreach ($ryhmä $ryhmissä) ( $jäsenet = Hanki-ADGroupMember ... ... )

Tyylikkäämpi lähestymistapa olisi luoda ryhmäkartoitusmalli, kloonata se jokaiselle käyttäjälle ja täyttää kopio käyttäjän ryhmäjäsenyydeillä. Jonkin tällaisen pitäisi toimia:

$template = @() Get-Content "C:\groups.txt" | ForEach-Object ( $malli[$_] = $false ) $groups = @() Get-ADGroup -Filter * | ForEach-Object ( $groups[$_.DistinguishedName] = $_.Name ) Get-ADUser -Filter * -Properties MemberOf | ForEach-Object ( $groupmap = $template.Clone() $_.MemberOf | ForEach-Object ( $groups[$_] ) | Missä-Object ( $groupmap.ContainsKey($_) ) | ForEach-Object ( $groupmap [$_] = $true ) Uusi-objekti -tyyppi PSO-objekti -ominaisuus $ryhmäkartta ) | Vie-Csv "C:\user_group_mapping.csv" -NoType

0

Olen leikkinyt tämän kanssa jonkin aikaa ja luulen löytäneeni tavan saada sinulle täsmälleen se, mitä etsit.

Luulen, että Ansgar oli oikeilla jäljillä, mutta en voinut saada sitä tekemään sitä, mitä seurasi. Hän mainitsi, että kirjoittamishetkellä hänellä ei ollut pääsyä AD-ympäristöön.

Tässä on mitä keksin:

$UserArray = Get-Content "C:\Temp\Users.txt" $GroupArray = Get-Content "C:\Temp\Groups.txt" $OutputFile = "C:\Temp\Something.csv" # Hajautustaulukon määrittäminen myöhempää käyttöä varten $UserHash = New-Object -TypeName System.Collections.Hashtable # Ulompi silmukka käyttäjien ja jäsenyyden lisäämiseksi UserHashiin $UserArray | ForEach-Object( $UserInfo = Get-ADUser $_ -Properties MemberOf # Poistaa LPAP-syntaksin vain SAMAccountName-ryhmään $Memberships = $UserInfo.MemberOf | ForEach-Object(($_.Split(",")) .replace("CN=","") ) #Käyttäjä=Jäsenyys-parin lisääminen tiivisteeseen $UserHash.Add($_,$Memberships) ) #Ulkosilmukka objektin luomiseksi käyttäjää kohti $Results = $UserArray | ForEach-Object( # Luo ensin yksinkertainen objekti $User = New-Object -TypeName PSCustomObject -Ominaisuus @( Nimi = $_ ) # Lisää jäseniä dynaamisesti objektiin $GroupArray $GroupArray | ForEach-Object ( #Checking $UserHash nähdäksesi näkyykö ryhmä käyttäjän jäsenluettelossa $UserIsMember = $UserHash.($User.Name) -sisältää $_ #Ominaisuuden lisääminen objektiin ja arvo $User | Add-Member -MemberType HuomautusOminaisuus -Nimi $ _ -Arvo $UserIsMember ) #Palauta objektin muuttujaan Return $User ) #Muunna objektit CSV-muotoon ja tulosta ne sitten $Results |

Toivotaan, että kaikki on järkevää. Kommentoin niin paljon kuin pystyin. Olisi erittäin helppoa muuntaa ADSI:ksi, jos sinulla ei olisi RSATia asennettuna mihin tahansa koneeseen, jolla käytät tätä. Jos tarvitset sitä, kerro minulle, niin teen pikaisia ​​muutoksia.

Skriptit kaikkien käyttäjien purkamiseen MS Active Directorysta (ITGC)

Ivan Piskunov

Yksi tavanomaisista tarkastusmenettelyistä ITGC luetteloa varten Active Directory on ladata kaikki verkkotunnuksen käyttäjät. Saatujen tietojen perusteella muodostetaan testausmenettelyt, esimerkiksi järjestelmänvalvojaluettelon tutkiminen tai käyttäjien tunnistaminen vanhentuneella salasanalla. Tehokkain tapa luoda tällainen lataus on käyttää vakiokäyttöliittymää PowerShell , joista tarkastelemme tässä artikkelissa

1. Pikalataus PowerShell-komentosarjan avulla

Alla on PowerShell-skripti, joka on yksi yksinkertaisimmista ja nopeimmista tavoista saada luettelo kaikista AD-verkkotunnuksen käyttäjistä CSV-muodossa, joka voidaan avata ilman ongelmia Excelissä.

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Tilien lukumäärä $users.Count $users | ForEach-Object ( $käyttäjä = $_.Ominaisuudet Uusi-Object PsObject -Property @( Position = $user.description Osasto = $user.department Kirjautuminen = $user.userprincipalname Puhelin = $käyttäjä.puhelinnumero Huone = $user.physicaldeliveryofficename Full nimi = $käyttäjä.cn ) ) | Export-Csv -NoClobber -koodaus utf8 -Path C: list_domain_users.csv

Jotta komentosarja toimisi järjestelmässäsi, sinun on korjattava sitä hieman, eli syötettävä tarvittavat parametrit, ts. kuten tässä esimerkissä, nämä ovat parametrit Käyttäjät osastolla Osastot verkkotunnuksessa Test.ru. Ilmoita myös polku, johon tiedosto on tallennettu list_domain_users.csv

Purkamisen jälkeen, jos avaat sen heti list_domain_users.csv , näyttää lukukelvottomalta, mutta tavallisilla keinoilla voimme helposti tuoda sen haluamaasi muotoon. Avaa Excelissä list_domain_users.csv , valitse ensimmäinen sarake, siirry sitten "Data"-välilehteen ja napsauta "Teksti sarakkeittain". Valitse "erotettu" ja napsauta "Seuraava". Valmis!

!On syytä huomata että tämä komentosarja ei näytä yli 1000 käyttäjää. Se sopii varsin pienelle yritykselle, mutta niille, joilla on valtava määrä käyttäjiä verkkotunnuksessaan, heidän tulisi turvautua alla kuvattuihin menetelmiin.

2. Advanced PowerShell-cmdlet Active Directory -käyttäjien lataamiseen

Active Directory Module for Windows PowerShell -työkalulla (joka on otettu käyttöön Windows Server 2008 R2:ssa ja sitä uudemmissa versioissa) voit luoda cmdlet-komentoja, jotka suorittavat erilaisia ​​käsittelyjä AD-hakemistoobjektien kanssa. cmdlet-komentoa käytetään hankkimaan tietoja käyttäjistä ja heidän ominaisuuksistaan Hanki ADUser.

Aloittaa käynnistä Powershell-ikkuna järjestelmänvalvojan oikeuksilla ja tuo Active Directory -moduuli jatkotoimenpiteitä varten:
Tuo-moduulin aktiivinen hakemisto

Vastaanottaja luettele kaikki verkkotunnuksen tilit Suoritetaan komento:

Get-ADUser -suodatin *

Vastaanottaja näyttää täydelliset tiedot kaikista käytettävissä olevista määritteistä user user, suorita komento

Get-ADUser -identiteetti tuser -ominaisuudet *


Olemme esimerkiksi kiinnostuneita tiedosta salasanan vaihtopäivä ja aika, jolloin se vanhenee . Komennon tulos voidaan viedä tekstitiedostoon:

Get-ADUser -suodatin * -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nimi, Salasana vanhentunut, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

Tai heti lataa CSV:hen , joka on jatkossa kätevä viedä Exceliin (lisäksi lajittelemme lajitteluobjektin avulla taulukon PasswordLastSet-sarakkeen mukaan ja lisäämme myös missä ehto - käyttäjänimen tulee sisältää merkkijono “Dmitry”)

Get-ADUser -suodatin * -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires | missä ($_.nimi – kuten "*Dmitry*") | sort-object PasswordLastSet | select-object Name, Password Expired, PasswordLastSet, PasswordEverExpires | Export-csv -polku c:tempuser-password-expires-2015.csv

Tässä artikkelissa tarkastellaan PowerShellin kykyä hallita Active Directory -toimialueryhmiä. Tarkastellaan, kuinka luodaan uusi ryhmä AD:ssa, lisätään siihen käyttäjiä (tai poistetaan se), luetellaan ryhmän käyttäjät ja useita muita hyödyllisiä toimintoja toimialueryhmien kanssa, jotka ovat erittäin hyödyllisiä päivittäisessä hallinnassa. AD-ryhmien hallintaa varten Active Directory PowerShell -moduuli tarjoaa seuraavat peruscmdlet-komentot:

Jotta voit käyttää näitä cmdlet-komentoja PowerShell-istunnossasi, on ladattava erityinen AD-vuorovaikutusmoduuli - Active Directory -moduuli Windows PowerShellille. Tämä moduuli esiteltiin ensimmäisen kerran Windows Server 208 R2:ssa. Windows Server 2012:ssa ja uudemmissa käyttöjärjestelmissä tämä moduuli on oletusarvoisesti käytössä. Asiakastietokoneissa se voidaan asentaa ja ottaa käyttöön yhtenä RSAT-komponenttina. Voit tarkistaa, onko moduuli ladattu seuraavasti:

Get-Module - Listavailable

Kuten näet, ActiveDirectory-moduuli on ladattu. Jos ei, tuo se komennolla:

Tuo-moduulin aktiivinen hakemisto

Täydellinen luettelo moduulikomennoista saadaan seuraavasti:

Get-Command - Module ActiveDirectory

Moduulissa on käytettävissä yhteensä 147 cmdlet-komentoa, joista 11 voi toimia ryhmien kanssa.

Get-Command -Moduuli ActiveDirectory -Nimi "*Group*"

Tässä on heidän luettelonsa:

  • Add-ADPrincipalGroup-jäsenyys
  • Hanki-ADAccountAuthorizationGroup
  • Hanki-ADGroup
  • Hanki-ADGroupMember
  • Hanki-ADPrincipalGroup-jäsenyys
  • Uusi-ADGroup
  • Poista-ADGroup
  • Poista-ADPrincipalGroupMembership
  • Set-ADGroup

Luodaan uusi ryhmä määritettyyn Active Directory -säilöön (OU) komennolla Uusi-ADGroup:

Uusi-ADGroup "TestADGroup" -polku "OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru" -GroupScope Global -PassThru -Verbose

Attribuutin käyttö Kuvaus voit määrittää kuvauksen ryhmästä ja käyttämällä Näyttönimi muuta näyttönimeä.

Parametri GroupScope Voit määrittää yhden seuraavista ryhmätyypeistä:

  • 0 = DomainLocal
  • 1 = Maailmanlaajuinen
  • 2 = universaali

Voit luoda jakeluryhmän seuraavasti:

Uusi-ADGroup "TestADGroup-Distr" -polku "OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru" -GroupCategory Distribution -GroupScope Global -PassThru -Verbose

Add-AdGroupMember – lisää käyttäjiä AD-ryhmään

Voit lisätä käyttäjiä Active Directory -ryhmään Add-cmdlet-komennolla Mainosryhmän jäsen. Lisätään kaksi käyttäjää uuteen ryhmään:

Add-AdGroupMember -Identity TestADGroup -Jäsenet user1, user2

Jos ryhmään lisättävien käyttäjien luettelo on melko suuri, voit tallentaa tililuettelon CSV-tiedostoon, tuoda tiedoston ja lisätä jokaisen käyttäjän ryhmään.

CSV-tiedostomuoto on seuraava (käyttäjäluettelo yksi riviä kohden, sarakkeen nimi – käyttäjät)

Import-CSV .\users.csv -Otsikkokäyttäjät | ForEach-Object (Add-AdGroupMember -Identity 'TestADGroup' -jäsenet $_.users)

Jos haluat saada kaikki yhden ryhmän (ryhmäA) jäsenet ja lisätä heidät toiseen ryhmään (ryhmäB), käytä tätä komentoa:

Get-ADGroupMember “GroupA” | Get-ADUser | ForEach-Object (Lisää-ADGroupMember -Identiteetti "Ryhmä-B" -Jäsenet$_)

Jos sinun on kopioitava kaikkien sisäkkäisten ryhmien jäsenet uuteen ryhmään (rekursiivisesti), sinun on käytettävä seuraavaa komentoa:

Hanki-ADGroupMember -Identiteetti "GroupA" -Rekursiivinen | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity "GroupB" -Jäsenet$_)

Remove-ADGroupMember – poista käyttäjät ryhmästä

Käyttäjien poistamiseksi AD-ryhmästä on käytettävä Remove-ADGroupMember -komentoa. Poistetaan kaksi käyttäjää ryhmästä:

Poista-ADGroupMember -Identity TestADGroup -Jäsenet user1, user2

Vahvista käyttäjien poistaminen ryhmästä:

Jos haluat poistaa käyttäjiä ryhmästä CSV-tiedoston luettelon mukaan, käytä tätä komentoa:

Import-CSV .\users.csv - Otsikkokäyttäjät | ForEach-Object (Remove-ADGroupMember -Identity 'TestADGroup' -jäsenet $_.users)

Get-ADGroup – hanki tietoa AD-ryhmästä

cmdlet auttaa sinua saamaan tietoa ryhmästä Hanki-ADGroup:

Hanki-ADGroup "TestADGroup"

Tämä komento näyttää tiedot ryhmän tärkeimmistä määritteistä (DN, ryhmän tyyppi, nimi, SID). Voit näyttää kaikkien AD-toimialueryhmän attribuuttien arvon suorittamalla seuraavan komennon:

Get-ADGroup "TestADGroup" -ominaisuudet *

Kuten näet, attribuutit, kuten ryhmän luomis- ja muokkausaika, kuvaus jne., näytetään nyt.

Get-ADGroup-cmdletillä voit löytää kaikki sinua kiinnostavat ryhmät tietyn mallin avulla. Sinun on esimerkiksi löydettävä kaikki AD-ryhmät, joiden nimet sisältävät lauseen järjestelmänvalvojat :

Get-ADGroup -LDAPFilter “(nimi=*järjestelmänvalvojat*)” | Muoto-taulukko

Get-ADGroupMember – näytä luettelo AD-ryhmän käyttäjistä

Näytä luettelo ryhmän käyttäjistä:

Hanki-ADGroupMember "TestADGroup"

Jos haluat jättää vain käyttäjänimet tuloksiin, suorita:

Get-ADGroupMember "TestADGroup"| ft nimi

Jos tämä ryhmä sisältää muita toimialueryhmiä, voit näyttää täydellisen jäsenluettelon, mukaan lukien kaikki sisäkkäiset ryhmät, käyttämällä Rekursiivinen.

Get-ADGroupMember 'palvelin-järjestelmänvalvojat" -rekursiivinen| ft nimi

Jos haluat viedä tiettyyn ryhmään kuuluvien tilien luettelon CSV-tiedostoon (myöhemmin Excelissä käytettäväksi), suorita seuraava komento:

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

Käytämme cmdlet-komentoa lisätäksesi käyttäjätilin tiedot AD:ssa tekstitiedostoon. Esimerkiksi tilin lisäksi sinun on näytettävä ryhmän käyttäjän sijainti ja puhelinnumero:

Get-ADGroupMember -Identity 'server-admins' -recursive| foreach ( Get-ADUser $_ -ominaisuudet otsikko, OfficePhone|Select-Object otsikko, OfficePhone)

(Get-ADGroupMember -Identity "verkkotunnuksen järjestelmänvalvojat").Count

Kävi ilmi, että "verkkotunnuksen järjestelmänvalvojat" -ryhmässä meillä on 7 järjestelmänvalvojan tiliä.

Voit etsiä luettelon tyhjistä ryhmistä tietyssä organisaatioyksikössä käyttämällä tätä komentoa:

Get-ADGroup -Filter * -Ominaisuudet Jäsenet -hakukanta “OU=Moscow,DC=corp,dc=winitpro,DC=ru” | jossa (-ei $_.members) | valitse Nimi

Ei ole mikään salaisuus, että PowerShellin ensimmäisestä versiosta lähtien Microsoft on yrittänyt tehdä siitä pääasiallisen Windowsin hallintatyökalun. Ja se toimii monella tapaa! Tänään yksinkertaisten esimerkkien avulla näytämme PowerShell-ominaisuudet, joiden avulla voidaan hankkia erilaisia ​​tietoja Active Directory -käyttäjistä ja heidän attribuuteistaan.

Huomautus. Aiemmin AD-käyttäjätilien attribuuttien saamiseksi piti käyttää erilaisia ​​työkaluja: ADUC-konsolia (mukaan lukien), apuohjelmaa jne. Työkalun valinta perustui yleensä käsillä olevaan tehtävään ja järjestelmänvalvojan ohjelmointikykyihin.

PowerShell 2.0 esitteli erityisen moduulin Active Directoryn kanssa työskentelyyn - (otettu käyttöön Windows Server 2008 R2:ssa), jonka cmdlet-komentojen avulla voit suorittaa erilaisia ​​​​käsittelyjä AD-hakemistoobjektien kanssa. cmdlet-komentoa käytetään tietojen hankkimiseen Active Directory -toimialueen käyttäjistä ja heidän ominaisuuksistaan Hanki ADUser. Voit käyttää Get-ADUser-cmdlet-komentoa saadaksesi minkä tahansa olemassa olevan käyttäjätilin attribuutin arvon AD:ssa. Lisäksi voit määrittää erilaisia ​​valintaehtoja ja luoda luetteloita verkkotunnuksen käyttäjistä ja heidän attribuuteistaan.

Tässä esimerkissä näytämme, kuinka voit käyttää PowerShell Get-ADUser -cmdlet-komentoa tietojen hakemiseen siitä, milloin käyttäjän salasana on viimeksi vaihdettu ja milloin se vanhenee.

Käynnistä Powershll-ikkuna järjestelmänvalvojan oikeuksilla ja tuo Active Directory -moduuli komennolla:

Tuo-moduulin aktiivinen hakemisto

Neuvoja. Windows Server 2012:ssa ja uudemmissa versioissa voit ohittaa tämän kohdan, koska PowerShell Active Directory -moduuli on oletusarvoisesti käytössä.

Asiakaskäyttöjärjestelmissä (esimerkiksi Windows 10), jotta Get-AdUser-komento toimii, sinun on asennettava asianmukainen RSAT-versio ja otettava komponentti käyttöön ohjauspaneelissa. Active Directory -moduuli Windows PowerShellille(Etäpalvelimen hallintatyökalut -> Roolinhallintatyökalut -> AD DS ja AD LDS -työkalut -> AD DS -työkalut).

Täydellinen luettelo kaikista Get-ADUser-cmdlet-argumenteista saadaan seuraavasti:

Auta Get-ADUSeria

Voit näyttää luettelon kaikista verkkotunnuksen tileistä suorittamalla komennon:

Get-ADUser -suodatin *

Palautetun luettelon muoto ei ole kovin kätevä käyttää, vain jotkut 10 perusattribuutista ja käyttäjätilien ominaisuuksista näytetään (DN, SamAccountName, Name, UPN jne.), lisäksi näemme, että on olemassa ei tietoa viimeisimmän salasanan vaihdon ajasta.

Jos haluat näyttää täydelliset tiedot kaikista käyttäjän käyttäjän käytettävissä olevista määritteistä, suorita komento:

Get-ADUser -identiteetti tuser -ominaisuudet *

Joten näemme täydellisen luettelon käyttäjätiliin liittyvistä AD-käyttäjämääritteistä ja niiden arvoista. Seuraavaksi siirrymme Get-ADUser-cmdlet-tulosteen muotoiluun niin, että tarvitsemamme kentät näkyvät. Olemme kiinnostuneita ominaisuuksista:

  • Salasana vanhentunut
  • PasswordLastSet
  • Salasana ei koskaan vanhene

Suoritetaan komento:

Get-ADUser tuser -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires

Nyt käyttäjätiedot sisältävät tietoa salasanan vaihdon päivämäärästä ja ajankohdasta, jolloin se vanhenee. Esitetään tiedot kätevämmässä taulukkomuodossa:

Get-ADUser -suodatin * -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, Password Expired, PasswordLastSet, PasswordNeverExpires

Käytä parametria näyttääksesi käyttäjätiedot tietystä organisaatioyksiköstä SearchBase:

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

Komennon tulos voidaan viedä tekstitiedostoon:

Get-ADUser -suodatin * -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nimi, Salasana vanhentunut, SalasanaLastSet, Salasana ei koskaan vanhentunut > C:\temp\users.txt

Tai CSV-muodossa, joka viedään jatkossa kätevästi Exceliin (käyttäen lisäksi lajittele-objekti Lajitellaan taulukko PasswordLastSet-sarakkeen mukaan ja lisätään myös ehto missä– käyttäjätunnuksessa on oltava merkkijono "Dmitry"):

Get-ADUser -suodatin * -ominaisuudet PasswordExpired, PasswordLastSet, PasswordNeverExpires | missä ($_.nimi – kuten "*Dmitry*") | sort-object PasswordLastSet | select-object Name, Password Expired, PasswordLastSet, PasswordEverExpires | Vie-csv -polku c:\temp\user-password-expires-2015.csv

Siten voit rakentaa taulukon tarvittavilla Active Directory -käyttäjämääritteillä.

Jos haluat saada luettelon AD-käyttäjätileistä tietyn ominaisuuden perusteella, käytä -Filter-parametria. Tämän parametrin argumentteina voit määrittää tiettyjen Active Directory -käyttäjämääritteiden arvon, jolloin Get-ADUser-cmdlet-komento otetaan käyttöön käyttäjille, jotka vastaavat suodatusehtoja.

AD-käyttäjien tulos, joiden nimi alkaa latinalaiskirjaimella:

Get-ADUser -suodatin (nimi -kuten "Roman*")

Get-ADUser -Filter (SamAccountName -kuten "*") | Measure-Object

Luettelo kaikista aktiivisista (ei estetty) tileistä AD:ssa:

Get-ADUser -Filter (Käytössä -eq "True") | Select-Object SamAccountName,Nimi,Sukunimi,Etunimi | Muoto-taulukko

Luettelo tileistä, joiden salasana on vanhentunut:

Get-ADUser -suodatin (Käytössä -eq $True) -ominaisuudet salasana Vanhentunut | missä($_.PasswordExpired)

Luettelo aktiivisista tileistä sähköpostiosoitteineen:

Get-ADUser -Filter ((mail -ne "null") -ja (Enabled -eq "true")) -Ominaisuudet Sukunimi,Etunimi,posti | Select-Object Name, Sukunimi, Etunimi,posti | Muoto-taulukko

Tehtävä: tekstitiedostoon tallennettujen tilien luetteloa varten (yksi tili riviä kohden), sinun on hankittava käyttäjän puhelinnumero AD:ssa ja ladattava tiedot teksti-csv-tiedostoon (voidaan helposti tuoda Esxeliin).

Import-Csv c:\ps\usernsme_list.csv | ForEach ( Get-ADUser -identiteetti $_.user -Ominaisuuksien nimi, puhelinnumero | Valitse nimi, puhelinnumero | Export-CSV c:\ps\export_ad_list.csv -Liitä -koodaus UTF8)

Seuraavassa esimerkissä voit ladata yrityksen osoitekirjan csv-tiedostona, joka voidaan myöhemmin tuoda Outlookiin tai Mozilla Thunderbirdiin:

Get-ADUser -Filter ((mail -ne "null") -ja (Enabled -eq "true")) -Ominaisuudet Sukunimi,Etunimi,posti | Select-Object Name, Sukunimi, Etunimi,posti | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

Käyttäjät, jotka eivät ole vaihtaneet salasanaansa viimeisten 90 päivän aikana:

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

$user = Get-ADUser winadmin -Ominaisuudet thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Koodaustavu

Luettelo ryhmistä, joihin käyttäjätili kuuluu

Get-AdUser winadmin -Ominaisuudet | Valitse Memberof -expandproperty memberof