am învățat deja multe despre PowerShell. Ultima dată când am lucrat cu WMI: PowerShell pentru începători (Partea 9): obțineți totul de la Windows cu PowerShell și WMI acum, după părerea mea, este cel mai bun moment pentru a vă concentra pe subiectul „filtrarea cu PowerShell”. Dar mai întâi, să ne uităm la exercițiul din ultima parte.
toate părțile seriei pot fi găsite aici: PowerShell pentru începători (serie)
recenzie (Partea 9)
iată atribuirea și soluția din partea 9:
regăsiți informații despre hard disk. Utilizați Get-WmiObject sau Get-CimInstance. Mai întâi, căutați obiectul WMI și odată ce l-ați găsit, afișați numele, partițiile, Modelul, Firmware-ul și numărul de serie.
În primul rând, trebuie să aflăm numele instanței WMI. Deoarece sarcina se referă la hard disk, am putea căuta *disc*, de exemplu.
Get-WmiObject *disk* -List
Win32_DiskDrive sună bine. Amintiți-vă metoda în doi pași din partea 8 pentru a obține mai mult din PowerShell:
Get-CimInstance win32_diskdrive | Get-Member
acolo veți găsi atributele corespunzătoare. Acum folosiți Select-Object pentru a le obține pe toate.
Get-CimInstance Win32_DiskDrive | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
Review
WMI (instrumente de gestionare Windows) oferă acces la citire și scriere la aproape toate setările Windows. Există două cmdleturi importante: Get-WmiObject și Get-CimInstance.
de ce filtrare?
filtrarea este o tehnologie cheie în PowerShell. Odată ce știți cum să filtrați, veți obține mai mult de la PowerShell.Ei bine, sarcina mea pentru această parte este de a explica de ce filtrarea este importantă. Ok să presupunem că aveți mai mult de un harddisk. Ieșirea de mai sus vă arată toate hard disk-urile. Dar doriți să afișați numai hard disk-uri Samsung, de exemplu.
De ce ai vrea să faci asta? Poate că șeful tău te întreabă câte discuri Samsung sunt în uz. Pe toate computerele. Amintiți-vă, WMI și PowerShell vă permite să faceți interogări la distanță. OK înapoi la subiect. Vrem doar Samsung SSD cu 500 GB. Urmăriți parametrul filtrului!
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
următoarele este un pic ieșit din comun și pentru tocilari PowerShell mai avansate, dar de ce nu? Următoarea comandă primește toate SSD-urile Samsung de pe toate computerele de domeniu, dar nu de pe servere.
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" -ComputerName (Get-ADComputer -Filter {operatingsystem -notlike '*server*'}).Name | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
dacă colegii dvs. cred că vă confruntați cu o problemă de nerezolvat, apăsați butoanele și arătați-le ce puteți face. ok, să mergem la exemple pentru începători.
obiecte de filtrare
vă amintiți comanda Get-ChildItem? Am folosit această comandă foarte des în această serie.
Dacă executați Get-Help Get-ChildItem veți găsi o mulțime de exemple de filtrare în ajutor.
Get-Help Get-ChildItem -Online
prefer să folosesc ajutorul local.
Get-Help Get-ChildItem -Examples
ce am învățat până acum?
filtrarea este o tehnologie cheie în PowerShell. Odată ce ați înțeles cum să filtrați, veți obține mai mult de la PowerShell.
filtrarea obiectelor Active Directory
Dacă sunteți un IT-Pro, probabil că lucrați într-un mediu Active Directory. Filtrarea este o tehnică cheie atunci când lucrați cu obiecte Active Directory.
următoarea comandă utilizează parametrul filtru pentru a obține toți utilizatorii care sunt dezactivați:
Get-ADUser -Filter {enabled -eq 'false'} | Select-Object Name
s-ar putea să vă întrebați cum știu numele atributelor? Amintiți-vă metoda în 2 pași pentru a obține mai mult din obiecte: 1. utilizați get-Membru 2. utilizați Select-obiect.
parametrul filtrului
Să aruncăm o privire în jur. Ce comenzi utilizează parametrul filtru? Rețineți că sunt pe un controler de domeniu.
Get-Command -ParameterName Filter
după cum puteți vedea parametrul filtru este folosit mai ales în comenzile Active Directory. Și trebuie să recunosc că am folosit întotdeauna parametrul filtru numai pentru Active Directory. Așa stau lucrurile. Deci, să ne concentrăm pe Active Directory. Să spunem că vrem toate computerele de domeniu (sistem de Operare Server și sistem de operare Client) sortate după Sistem de operare. Pentru aceasta trebuie să folosim parametrul filtru cu *.
Get-ADComputer -Filter * -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address | Sort-Object OperatingSystem | Select-Object Name,OperatingSystem
în ceea ce privește filtrarea, aceasta a fost o sarcină simplă.
metoda de filtrare
acum încercăm să obținem toate computerele care au instalat Windows 10. Pentru aceasta, trebuie să punem parametrul filtrului în paranteze curbate.
Get-ADComputer -Filter {operatingsystem -like '*windows 10*'}
este timpul să descompunem detaliile.
parantezele
pun filtrul în paranteze curbate.
atributele
în continuare aflați numele proprietăților (atributelor). Am discutat deja în PowerShell pentru începători (Partea 8): puterea PowerShell – contactarea obiectelor (get-Member, Select-Object). Amintiți-vă metoda în doi pași!
Get-ADComputer client01 -Properties * | Get-Member
notă laterală: notați parametrul proprietăți. În Active Directory nu toate proprietățile sunt afișate în mod implicit.
operatorii
apoi folosesc un operator.
un operator ar putea fi-like, -as, -equal, -ne și așa mai departe … pentru mai multe detalii despre parametrii de tip
help about_operators
aceasta deschide un fișier text care este stocat pe computer.
enunțul
dacă vrem să filtrăm ceva, avem nevoie de o condiție. Această condiție trebuie plasată între ghilimele.
Review
dacă lucrați cu filtre, consultați mai întâi secțiunea Ajutor. Filtrele sunt de obicei plasate între paranteze. Adesea este folosit și un operator.
mai multe exemple de filtrare … fără prea multe discuții …
căutarea utilizatorilor care au un număr de parole rău de 0. Iată un exemplu al contului lui Petra:
Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name
căutarea utilizatorilor care au un număr de parole rău de 0 și sunt activate. (Veți vedea că Petra nu este activată).
Get-ADUser -Filter {(badpwdcount -eq '0') -and (enabled -eq 'true')} | Select-Object Name
Afișează toate computerele din domeniul Windows Server, dar numai cele care execută Windows Server 2016 și ale căror nume încep cu DC.
Get-ADComputer -Filter {(operatingsystem -like '*2016*') -and (name -like 'dc*')}
dar uneori trebuie să găsim o altă cale. Anume atunci când nu este disponibilă nicio filtrare. Apoi folosim Where-Object.
filtrare cu Where-Object
Where-Object este întotdeauna în partea dreaptă a conductei. Filtrarea pe stânga. Ce înseamnă asta, argumentele pro și contra la sfârșitul postului. Pentru această parte, ne vom concentra pe unde-obiect.
iată câteva exemple din ajutorul PowerShell.
Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}
Get-ChildItem c:\scripts | Where-Object {$_.length -gt 100000}
cu toate acestea, aș dori să folosesc un exemplu dintr-una dintre contribuțiile mele.
Get-Hotfix | Where-Object HotfixID -like KB31*
acordați atenție remedierii rapide. Se referă la un atribut.
procedura recomandată (din cauza compatibilității înapoi) arată astfel:
Get-Hotfix | Where-Object {$_.HotfixID -like 'KB31*'}
este ceva nou acum. Ce înseamnă$_?
$_ este o variabilă care iterează peste fiecare obiect / element trecut de la anterior (țeavă). Pur și simplu pune: ia remedierea rapidă de la fiecare obiect care vine de la conducta.
filtrare vs.Where-Object
dacă nu este disponibil niciun filtru, utilizați Where-Object. Dacă sunteți în stare să utilizați un filtru pe partea stângă a conductei folosi! De ce? Ei bine, este o diferență dacă trimiteți 1000 de obiecte peste țeavă sau doar 500, în cazul Where-Object toate obiectele trebuie să treacă prin țeavă și numai atunci sunt filtrate. Amintiți-vă conducta de la Partea 7: PowerShell pentru incepatori (Partea 7): conducta (și multe exemple pentru a juca cu)
Review
unde-obiect este întotdeauna pe partea dreaptă a conductei. Filtrarea pe stânga. Dacă aveți posibilitatea de a alege între un filtru pe partea stângă a conductei sau în cazul în care-obiect pe partea dreaptă, apoi alegeți partea stângă.
exercițiu
iată exercițiul până la următoarea parte.
Where-Object:
utilizați Get-Service și Where-Object pentru a afișa numai serviciile care rulează.
Filter (Active Directory required):
utilizați parametrul filtru pentru a obține toți utilizatorii care sunt dezactivați.
ne vedem data viitoare la subiect: PowerShell pentru începători (Partea 11): distracție cu unitățile PowerShell
Patrick Gruenauer, MVP PowerShell