Să descompunem frumos asta:
Ultima conectare
nu este replicat între DC-uri - este un marcaj temporal unic per DC pentru acel cont. Dacă un computer nu s-a conectat niciodată la DC pe care îl atinge interogarea dvs., acea proprietate nu va fi populată. Dacă este în mare parte conectat la DC-uri diferite, data ar putea fi inexactă. În schimb, dacă doriți pur și simplu să știți dacă computerele s-au conectat „recent”, interogați LastLogonTimeStamp
sau LastLogonDate
- vezi nota de mai jos.
Când doriți să înțelegeți ce face o interogare, nu o aruncați doar prin conductă și să ieșiți în CSV. Cu excepția cazului în care vă place să nu aveți idee despre ce se întâmplă și să deschideți un fișier CSV gol, executați mai întâi comenzi simple pentru a înțelege rezultatul și pentru a vă asigura că obțineți rezultatele corecte înainte de a le trimite în fișier. Vezi exemple de mai jos.
Dacă tot ce ai nevoie este Ultima conectare
sau LastLogonDate
și numele computerului, Vă rog nu folosi -Proprietăți*
. Interogarea dvs. va dura mult mai mult, deoarece trageți înapoi toate datele din contul de computer. Dacă aveți certificate stocate în obiecte computer în AD, acestea pot fi KB de date pentru fiecare obiect. Dacă aveți nevoie doar de două proprietăți, selectați-le: Get-ADComputer -filter '*' -properties Nume, LastlogonDate
. Un exemplu de dimensiuni de date este la sfârșit.
LastLogonTimeStamp vs LastLogonDate
Spre deosebire de Ultima conectare
, LastLogonTimeStamp
este replicat printre toate DC, dar este precis doar cu până la 14 zile în urmă. LastLogonDate
este la fel ca LastLogonTimeStamp
, dar este un calculat [DateTime]
proprietate (nu este stocată în LDAP, dar este calculată atunci când o interogați). Din moment ce este o [DateTime]
, Este mai ușor să sortați și să filtrați.
Dacă LastLogonTimeStamp
are 14 sau mai puțin de zile, este posibil să existe unul mai nou Ultima conectare
pentru acea mașină pe unul sau mai multe DC-uri. Dacă aveți nevoie de o oră mai precisă, va trebui să interogați toate DC-urile pentru Ultima conectare
pe toate conturile de computer și apoi comparați care are cea mai recentă dată. Dar pentru scopuri tipice de raportare, cum ar fi dacă auditați conturi de mașini care ar putea fi „învechite”, LastLogonDate
in general este bine.
A se referi la Acest articol pentru mai multe informatii.
Înțelegerea rezultatelor interogărilor AD/LDAP
Când nu sunteți sigur cum arată rezultatele dvs., nu le trimiteți în fișier. Pentru a înțelege ce fac comenzile dvs., încercați un filtru simplu și lăsați-l să iasă în consolă. Apoi rafinați interogarea după cum este necesar. Dacă trebuie să procesați datele după obținerea rezultatului, faceți un pas la un moment dat și verificați rezultatele înainte de a adăuga mai multe. Lucrez cu Powershell de 15 ani și încă încep așa - verific ce iese mai întâi înainte de a face următorul pas de filtrare și procesare a datelor.
Încercați următoarele exemple, înlocuind, evident, numele organizațiilor organizaționale și ale computerelor cu cele corecte din mediul dvs. (apropo, nu dezvăluiți nume reale în întrebările dvs.)
# Listați toate computerele din OU cu proprietăți implicite pe care le emite Get-AdComputer - aceasta nu include LastLogonDate etc.
# de exemplu. nume, nume distinctiv, activat, tip obiect etc...
Get-ADComputer -Filter * -Searchbase „OU=MyOUPath,DC=example,DC=net”
# Afișați -toate- proprietățile de pe un computer numit „MyComputer”
Get-ADComputer -Filter 'nume -eq "Mycomputer"' -Searchbase "OU=MyOUPath,DC=example,DC=net" -proprietăți *
# Afișați numai anumite proprietăți de pe același computer
Get-ADComputer -Filter 'nume -eq "Mycomputer"' -Searchbase "OU=MyOUPath,DC=example,DC=net" -properties Name,LastLogonDate
# Listați toate computerele din OU numai cu nume și LastLogonDate
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -properties Name,LastLogonDate
# Ca mai sus, folosind o expresie pentru a converti proprietatea LastLogon nereplicată în [datetime]
# Rețineți că este necesară o procesare suplimentară dacă trebuie să comparați această dată între mai multe DC
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -properties Nume,LastLogon | Selectați Name, LogonDate,@{Name='LastLogon';Expression={[DateTime]::FromFileTime($_.LastLogon)}}
# Dacă rezultatele dvs. dintr-o comandă anterioară arată bine, acum puteți sorta și trimite în CSV
Get-ADComputer -Filter * -Searchbase "OU=MyOUPath,DC=example,DC=net" -properties Name,LastLogonDate | Sortează LastLogonDate | selectați Name,LastLogonDate | export-csv -path c:\Temp\ADComputer.csv -NoTypeInformation
Pentru ultimul exemplu, Selectați Name, LastLogonDate
este de a exclude proprietățile implicite, cum ar fi Nume Distins
și objectClass
din exportul CSV. De asemenea, dacă nu vă place cum LastLogonDate
este formatat, poate fi necesar să includeți o expresie pentru a o formata și acolo (similar cu conversia fișierului LogonDate
timp de fișier).
Dimensiunea datelor de interogare LDAP
Lista de fișiere de mai jos arată diferența de dimensiunea datelor dacă returnez doar fișierul Nume
și LastLogonDate
a unui computer în „comp1.txt” vs TOATE proprietățile aceluiași computer în „comp2.txt”. Înmulțiți cu numărul de mașini care sunt interogate - este foarte ușor de văzut de ce o interogare va dura mult mai mult atunci când trage date inutile din AD și în rețea.
Mod LastWriteTime Lungime Nume
---- ------------- ------ ----
-a---- 2022-02-14 18:41 894 comp1.txt
-a---- 2022-02-14 18:42 69736 comp2.txt