Etsi toimialueesi passiivisia käyttäjätilejä
Active Directory on hakemistopalvelu, joka ylläpitää tietoja käyttäjistä, tietokoneista ja niihin liittyvistä esineistä. Näin löydät passiivisia käyttäjätilejä.
se on relaatiotietokanta, joka tarvitsee ylläpitoa ajan mittaan ollakseen hyödyllinen ja merkityksellinen. Hakemistossa ei enää käytetä tilejä. Näiden tilien löytäminen Active Directorysta ei ole niin helppoa kuin miltä se ensi silmäyksellä kuulostaa. Kävellään läpi toimimattomien käyttäjätilien löytämistä ja automatisoidaan niiden poistaminen.
Määrittele hakukriteerit
määritellään, mitä tähän prosessiin tarvitaan. Tavoitteenamme on löytää työntekijöiden tilejä, jotka eivät ole kirjautuneet verkkoon pitkään aikaan. Olen aina käyttänyt 90 tai 120 päivää hyvänä toimenpiteenä kyselyn toimettomuus, mutta että määrä voi olla niin alhainen 14 päivää. Sinun täytyy päättää, mikä on oikein organisaatiollesi. 90 päivää antaa tarpeeksi iso tyyny, jotta ihmiset pois toimistosta loma, perheen hätätilanteita, tai laajennettu sairauslomaa. Kun tilit ovat poissa käytöstä 90 päivää, haluamme poistaa tilit käytöstä ja siirtää ne erilliseen yksikköön.
määrittelemällä ensin, mitä etsimme, voimme rakentaa yksinkertaisen sääntökokoelman, jota noudattaa. Sääntömme näyttävät tältä.:
- Etsi ja poista käytöstä aktiiviset tilit, joilla ei ole kirjautumistoimintaa 90 päivään.
- siirrä jokainen vammainen tili vammaisten käyttäjien OU
- merkitse jokainen vammainen käyttäjä huomautuksella, että automatisoitu prosessi on poistanut sen käytöstä.
Etsi tilin Käyttämättömyysominaisuudet
jokaisella käyttäjätilillä on useita määritteitä, jotka sisältävät kirjautumistiedot. Haluamme löytää attribuutteja, jotka näyttävät viimeisen kirjautumisajan. Jos löydämme nämä attribuutit, Voimme käyttää niitä kyselläksemme tilejä, jotka eivät ole kirjautuneet tietyn päivämäärän jälkeen. Voimme käyttää Powershellia näyttääksemme kaikki säännöt ja valitaksemme ominaisuuden, jolla työskennellä.
Get-ADUser on käytetyin cmdlet käyttäjätietojen näyttämiseen. Voit käyttää Get-ADObject ja Search-ADAccount, mutta Get-ADUser on paras cmdlet tehtäväämme. Näyttää kaikki käyttäjän ominaisuudet, meidän täytyy lisätä-ominaisuudet * cmdlet syntaksi. Jos jätämme tämän syntaksin pois, näemme vain Oletusominaisuudet, jotka ovat vain 10 ominaisuutta.
Get-ADUser Michael_Kanakos -Properties *
palautamme kyselystämme pitkän listan kenttiä (yli 150!). Voimme etsiä attribuutteja, jotka sisältävät tiettyjä sanoja yleismerkkien avulla. Tämä auttaa meitä löytämään ominaisuuksia, jotka voivat olla hyödyllisiä tehtävässämme. Haluamme löytää kirjautumistiedot, joten etsitään attribuutteja, jotka sisältävät sanan Logon.
kun kerromme Powershellille, että saa kaikki ominaisuudet, olisi hyödyllistä, jos voisimme rajoittaa ominaisuuksien luettelon näyttämään vain ominaisuuksia, jotka vastaavat sanaa kirjautuminen. Select-Object tarjoaa mahdollisuuden tehdä villi kortti ottelu ja rajoittaa tuloksia. / – Merkki (nimeltään ”the pipe”) ottaa tulokset vasemmalla ja siirtää ne Select-Object. Select-Object suorittaa sitten wild-card matchingin ja rajoittaa tuloksia villi kortti-kriteeriemme perusteella.
Get-ADUser username -Properties * | Select-Object *logon*
BadLogonCount : 0
lastLogon : 132181280348543735
LastLogonDate : 11/11/2019 9:08:45 PM
lastLogonTimestamp : 132179981259860013
logonCount : 328
LogonWorkstations :
MNSLogonAccount : False
SmartcardLogonRequired : False
tulokset vaihtelevat hieman sen mukaan, mikä on Active Directoryn toimialueen toiminnallinen taso. Haku palauttaa kahdeksan ominaisuutta. Kolme näyttää lupaavalta: LastLogon, LastLogonDate ja LastLogonTimeStamp. Jotkut arvot voivat näyttää hieman oudolta, jos et tiedä, miten Active Directory tallentaa päivämäärän / kellonajan tiedot tiettyihin attribuutteihin. Osa treffitiedoista on perinteisiä Treffi-ajan tietoja, ja osa tallennetaan ”punkeiksi.”
PowerShell and. NET Framework date-time-arvot edustavat päivämääriä punkkien lukumääränä alkaen 12: 00 am January 1, 0001. Puutiaisia on kymmenen miljoonasosasekuntia, eli puutiaisia on 10 000 millisekuntia kohden. On olemassa math cmdlets, jotka voivat muuntaa punkit standardin päivämäärä muodossa.
PowerShell näyttää todellisen rastin, joka edustaa päivämäärää/aikaa. Jos olet mukava muuntaa punkit päivämäärä muodossa, voit tarkastella näitä kenttiä Active Directory käyttäjä ja tietokoneet tai Active Directory hallintakeskus. Molemmissa sovelluksissa, punkit ovat edustettuina Aika-Päivämäärä muodossa.
ADUser-Logon-Properties
Logon attribuutit selitetty
hakumme löysi useita ominaisuuksia, jotka näyttävät date/time logon tiedot. Kahdella kiinteistöllä on sama päivämäärä ja kellonaika ja yhdellä Ei. Mitä täällä tapahtuu?
date-time-tietojen varianssi on suunniteltu ja se on paikallaan suojaamaan DC:tä murskaantumiselta replikointiliikkeellä, joka yrittää pitää kaikki kirjautumistiedot synkronoituna. LastLogon-ominaisuus päivittyy joka kerta, kun autentikoit, mutta tiedot tallennetaan DC: lle, jota vastaan autentikoit, eikä niitä monisteta muille DC: lle. LastLogonTimeStamp-ja LastLogonDate-ominaisuudet kopioidaan kaikille DC: lle, mutta replikointi tapahtuu vain harvoin.
jos tarkastelemme päivämääriä, voimme nähdä, miten viivästynyt replikointi voisi vaikuttaa kyselyymme. Huomaa, että LastLogonTimeStamp on itse asiassa kaksi päivää jäljessä tässä esimerkissä. Joka kerta, kun käyttäjä kirjautuu interaktiivisesti sisään, koskettaa verkon tiedostonjakoa tai suorittaa muita toimintoja, jotka edellyttävät verkon tunnistamista, se tallentaa kirjautumistiedot Active Directoryyn. Jos dc toistaa tiedot joka kerta, kun joku koskee johonkin verkossa, DC: t voivat hukkua suuressa ympäristössä. Tuloksena on, että osa kirjautumistiedoista on tarkkoja, mutta ei monistettuja, ja osa kirjautumistiedoista monistuu, mutta vain satunnaisesti.
vaatimuksiimme emme tarvitse tarkkaa kirjautumisen aikaleimaa. Meidän tarvitsee vain löytää tilejä, jotka eivät ole kirjautuneet pitkään aikaan (yli 90 päivää). Mikä tahansa arvo voi olla hyödyllinen, vaikka päivämäärä olisi pois muutaman päivän. Jos käytämme kirjautumispäiviä esimerkkinä, kyselyaika voi olla 11/11 tai 11/13 riippuen käyttämästämme arvosta. Kelaa eteenpäin kolme kuukautta ja oleta, etten enää Kirjautunut sisään. Yksi päivämäärä merkittäisiin toimimattomaksi, koska se on yli 90 päivää,ja yksi kenttä ei. Mutta jos asetan tämän prosessin toimimaan kuukausittain, saisin tilin kiinni seuraavan kerran, kun tarkistamme. Se on ratkaiseva osa. Jos teemme tämän säännöllisesti, voimme käyttää kumpaa tahansa kenttää, kunhan tarkistamme jatkuvasti.
käytin Lastlogondaatin ominaisuutta kahdesta syystä. Ensinnäkin, se on jo päivämäärä arvo, joten minun ei tarvitse käsitellä muuntamalla arvoa. Toiseksi, se on monistettu arvo, ja se tekee elämästäni helpompaa. Jos käytin Lastlogonia, minulla olisi päivämääriä, jotka eivät ole ajan tasalla ihmisille, jotka todentavat muita verkkoalueohjaimia vastaan. Minun täytyisi kysellä paikalliselta DC: ltä, jotta jokainen käyttäjä saisi uusimman aikaleiman, ja se on paljon työtä eikä kovin tehokasta.
tiedon saamiseksi yhdelle tilille koodi on yksinkertainen.
get-aduser Michael_Kanakos -properties LastLogonDate | Select-Object Name, LastLogonDate
Name LastLogonDate
---- -------------
mkanakos 11/11/2019 9:08:45 PM
tämän tekeminen kaikille käyttäjilleni vaatii vain hieman enemmän koodia. Meidän täytyy käyttää suodatinta kyselläksemme kaikkia käyttäjätilejä.
Get-ADUser -filter * -properties LastLogonDate | Select-Object Name, LastLogonDate
nyt löydetään vain tilit, joiden kirjautumispäivä on yli 90 päivää. Tarvitsemme nykyisen päivämäärän tallennettavaksi vertailuoperaattoriksi.
$date = (get-date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -lt $date} -properties LastLogonDate | Select-Object Name, LastLogonDate
tämä koodi hakee kaikki käyttäjät, jotka eivät ole kirjautuneet sisään yli 90 päivään. Tallennamme päivämäärän 90 päivää sitten muuttujaan. Voimme luoda MAINOSSUODATTIMEN löytääksemme kirjautumispäivämäärän alle. Seuraavaksi meidän on lisättävä vaatimukseen kysellä vain aktiivisia tilejä. Tässä esimerkissä käytän splatting tehdä koodin luettavampi, koska syntaksi on hyvin pitkä. Splatting AD cmdlets voi olla hankala, joten olen myös näyttänyt pitkän muotoinen versio syntaksi alla splatting esimerkki.
$date = (get-date).AddDays(-90)
$paramhash = @{
Filter = "LastLogonDate -lt $date -and Enabled -eq $true"
Properties = 'LastLogonDate'
}
$SelectProps = 'Name','LastLogonDate','Enabled','DistinguishedName'
$InactiveUsers = Get-Aduser @paramhash | Select-Object $SelectProps
$InactiveUsers = Get-ADUser -Filter {LastLogonDate -lt $date -and Enabled -eq $true} -properties LastLogonDate, DistinguishedName | Select-Object Name, LastLogonDate, Enabled, DistinguishedName
tämä antaa meille passiiviset käyttäjämme, jotka ovat käytössä. Tallennamme tulokset muuttujaan uudelleenkäyttöä varten. DistinguishedName-ominaisuutta tarvitaan myöhemmin. Kun löydämme käyttäjät, voimme työskennellä seuraava askel: poistamalla tilit. Käytämme Set-ADUser cmdletiä tehdäksemme mainosten käyttäjätilimuutoksia.
$Today = Get-Date
$DisabledUsers = (
$InactiveUsers | Foreach-object {
Set-User $_.DistinguishedName -Enabled $false -Description "Acct disabled on $Today via Inactive Users script"}
)
olemme poistaneet käyttäjätilimme käytöstä. On aika siirtää heidät uuteen OU: hun. Esimerkiksi käytämme ou nimeltä vammaiset-käyttäjät. Tämän OU: n tunnettu nimi on ”ou=Disabled-Users,DC=Contoso,DC=Com” käytämme Move-ADObject cmdlet: tä siirtääksemme käyttäjät kohteeseen OU.
$DisabledUsers | ForEach-Object {
Move-ADObject $_.DistinguishedName -TargetPath "OU=Disabled-Users,DC=Contoso,DC=Com"}
viimeisessä vaiheessa käytimme Move-ADObject-projektia siirtääksemme käyttäjät uuteen OU: hun. Meillä on nyt ydinkoodi, jota tarvitaan luotettavan, toistettavan automatisoidun tehtävän tekemiseen. Mitä seuraavaksi? Se riippuu yksilöllisistä tarpeistasi. Tämä koodi voidaan ja pitäisi määrittää toimimaan automaattisesti samaan aikaan joka kuukausi. Yksi helppo tapa tehdä, että on luoda aikataulun työtä ajaa koodin kuukausittain.
tähän koodiin voisi lisätä muutakin, jotta se olisi parempi. Koodi virheiden tarkistamiseen ja käyttäjien lisätiedot kentät olisivat kaksi hyödyllistä lisäyksiä. Useimmat tiimit, jotka suorittavat tämäntyyppisiä tehtäviä, tuottavat raportin siitä, mikä on poistettu käytöstä jonkun tarkistettavaksi, joten lisäkentät var. Voit lisätä lisää kenttiä Active Directorysta tehdäksesi raportista hyödyllisemmän. Voisimme ottaa tämän tehtävän askeleen pidemmälle luomalla toisen tehtävän poistaa nämä vammaiset käyttäjät 6 kuukauden kuluttua.
haastavien automaatiopyyntöjen ratkaiseminen on paljon helpompaa, kun tehtävät on jaettu hallittaviin osiin. Aloitimme vaatimuksista ja rakensimme syntaksimme pienin askelin; vahvistamme, että jokainen vaihe toimii ennen kuin yritämme lisätä toiseen muuttujaan. Näin teimme tästä tehtävästä helposti ymmärrettävän ja toivottavasti hienon oppimiskokemuksen.