PowerShell For Nybegynnere (Del 10): Filtrering og Hvor-Objekt

Vi har allerede lært mye Om PowerShell. Sist gang vi jobbet MED WMI: PowerShell For Nybegynnere (Del 9): Få alt Fra Windows Med PowerShell Og WMI Nå, etter min mening, er det den beste tiden å fokusere på temaet «Filtrering Med PowerShell». Men først, la oss se på øvelsen fra den siste delen.

alle deler av serien finner du her: PowerShell For Nybegynnere (Serie)

Gjennomgang (Del 9)

her er oppgaven og løsningen fra del 9:

Hent informasjon om harddisken din. Bruk Get-WmiObject eller Get-CimInstance. Søk FØRST ETTER Wmi-Objektet, og når du har funnet det, viser Navnet, Partisjonene, Modellen, Fastvaren og Serienummeret.

Først må vi finne ut navnet PÅ wmi-forekomsten. Siden oppgaven refererer til harddisken, kan vi søke etter * disk*, for eksempel.

Get-WmiObject *disk* -List

Unbenannt.PNG

Win32_DiskDrive høres bra ut. Husk to-trinns metoden fra del 8 for å få mer ut Av PowerShell:

Get-CimInstance win32_diskdrive | Get-Member

der finner du de riktige attributter. Bruk Nå Select-Object for å få dem alle.

Get-CimInstance Win32_DiskDrive | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber

Unbenannt.WMI (Windows Management Instruments) gir lese - og skrivetilgang til nesten Alle Windows-innstillinger. Det er to viktige cmdlets: Get-WmiObject Og Get-CimInstance.

hvorfor filtrering?

Filtrering er en nøkkelteknologi I PowerShell. Når du vet hvordan du filtrerer, får du mer ut Av PowerShell.

Vel, min oppgave for denne delen er å forklare hvorfor filtrering er viktig. Ok la oss si at du har mer enn en harddisk. Utgangen over viser deg alle harddisker. Men du vil bare vise Samsung-harddisker, for eksempel.

unbenannt.PNG

Hvorfor vil du gjøre dette? Kanskje sjefen din spør deg hvor Mange Samsung-disker som er i bruk. På alle datamaskiner. Husk AT WMI og PowerShell lar deg gjøre eksterne spørringer. Ok tilbake til emnet. Vi vil bare Ha Samsung SSD med 500 GB. Se på filterparameteren!

Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber

Unbenannt.PNG

følgende er litt utenom det vanlige og for mer avanserte PowerShell nerds, men hvorfor ikke? Følgende kommando får Alle Samsung Ssd-Er fra alle domenedatamaskiner, men ikke fra 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

hvis dine kolleger tror du står overfor et uløselig problem, bare trykk på knappene og vis dem hva du kan gjøre. 😉

Ok, la oss gå til eksemplene for nybegynnere.

Filtreringsobjekter

husker du Kommandoen Get-ChildItem? Jeg har brukt denne kommandoen veldig ofte i denne serien.

hvis Du kjører Get-Help Get-ChildItem finner du mange filtreringseksempler i hjelpen.

Get-Help Get-ChildItem -Online

jeg foretrekker å bruke lokal hjelp.

Get-Help Get-ChildItem -Examples

unbenannt.PNG

Hva har vi lært så langt?

Filtrering er en nøkkelteknologi I PowerShell. Når du forstår hvordan du filtrerer, får du mer ut Av PowerShell.

Filtrering Av Active Directory-Objekter

hvis DU ER EN IT-Pro, jobber du sannsynligvis I Et Active Directory-miljø. Filtrering er en viktig teknikk når du arbeider Med Active Directory-Objekter.

følgende kommando bruker Filterparameteren til å hente alle brukere som er deaktivert:

Get-ADUser -Filter {enabled -eq 'false'} | Select-Object Name

Unbenannt.PNG

du lurer kanskje på hvordan jeg kjenner attributtnavnene? Husk 2-trinns metode for å få mer ut av objekter: 1. bruk Get-Member 2. bruk Velg-Objekt.

Unbenannt.PNG

Filterparameteren

La oss ta en titt rundt. Hvilke kommandoer bruker filterparameteren? Merk at jeg er på en domenekontroller.

Get-Command -ParameterName Filter

som du kan se, brukes filterparameteren mest i Active Directory-kommandoer. Og jeg må innrømme at jeg alltid har brukt filterparameteren bare For Active Directory. Det er slik det er. Så, la oss konsentrere Oss Om Active Directory. Si at vi vil at Alle Domenedatamaskiner (Serveroperativsystem og Klientoperativsystem) sorteres etter operativsystem. For dette må vi bruke filterparameteren med *.

Get-ADComputer -Filter * -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address | Sort-Object OperatingSystem | Select-Object Name,OperatingSystem

Unbenannt.PNG

når det gjelder filtrering, var dette en enkel oppgave.

Filtreringsmetoden

nå prøver Vi å få alle datamaskinene som Har Windows 10 installert. For dette må vi sette filterparameteren i buede parenteser.

Get-ADComputer -Filter {operatingsystem -like '*windows 10*'}

Det er på tide å bryte ned detaljene.

brakettene

Sett filteret i buede braketter.

Unbenannt.PNG

attributtene

neste finn ut egenskaper (attributter) navn. Vi har allerede diskutert Det I PowerShell For Nybegynnere (Del 8): Kraften Til PowerShell-Komme I Kontakt Med Objekter (Get-Member, Select-Object). Husk to-trinns metoden!

Unbenannt.PNG

Get-ADComputer client01 -Properties * | Get-Member

unbenannt.PNG

Side Merk: Legg Merke til egenskapsparameteren. I Active Directory vises ikke alle egenskaper som standard.

operatorene

neste bruker en operatør.

Unbenannt.PNG

en operatør kan være-like, -som, -lik, -ne og så videre … for mer om parametertype

help about_operators

dette åpner en tekstfil som er lagret på datamaskinen din.

erklæringen

hvis vi vil filtrere noe, trenger vi en tilstand. Denne tilstanden må plasseres i anførselstegn.

Unbenannt.PNG

Review

hvis du arbeider med filtre, se Hjelp-delen først. Filtre er vanligvis plassert i parentes. Ofte brukes en operatør også.

Noen Flere Filtereksempler … uten mye å snakke …

Søker etter brukere som har et dårlig passordtall på 0. Her er et eksempel På Petras konto:

Unbenannt.PNG

Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name

unbenannt.PNG

Søker etter brukere som har et dårlig passordtall på 0 og er aktivert. (Du vil se Petra er ikke aktivert).

Get-ADUser -Filter {(badpwdcount -eq '0') -and (enabled -eq 'true')} | Select-Object Name

unbenannt.PNG

Vis Alle Windows Server-Domenedatamaskiner, men bare De Som kjører Windows Server 2016 og hvis navn starter MED DC.

Get-ADComputer -Filter {(operatingsystem -like '*2016*') -and (name -like 'dc*')}

Unbenannt.PNG

Men noen ganger må vi finne en annen måte. Nemlig når ingen filtrering er tilgjengelig. Da bruker Vi Hvor-Objekt.

Filtrering Med Hvor-Objekt

Hvor-Objekt er alltid på høyre side av røret. Filtrering til venstre. Hva det betyr, fordeler og ulemper på slutten av innlegget. For denne delen vil vi konsentrere Oss Om Hvor-Objekt.

her er noen eksempler Fra PowerShell-hjelpen.

Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}
Get-ChildItem c:\scripts | Where-Object {$_.length -gt 100000}

jeg vil imidlertid bruke et eksempel fra et av mine bidrag.

Get-Hotfix | Where-Object HotfixID -like KB31*

unbenannt.PNG

Vær oppmerksom På HotFixID. Det refererer til et attributt.

den anbefalte prosedyren (på grunn av bakoverkompatibiliteten) ser slik ut:

Get-Hotfix | Where-Object {$_.HotfixID -like 'KB31*'}

Unbenannt.PNG

Det er noe nytt nå. Hva betyr$_?

$_ er en variabel som itererer over hvert objekt / element passert fra forrige (rør). Enkelt sagt: ta hotfixID fra hvert objekt som kommer fra røret.

Filtrering vs. Where-Object

hvis ingen filter er tilgjengelig, bruk Where-Object. Hvis du kan bruke et filter på venstre side av røret, bruk det! Hvorfor? Vel, det er en forskjell om du sender 1000 objekter over røret eller bare 500, i tilfelle Hvor-Objekt alle objekter må passere gjennom røret og først da blir de filtrert. Husk røret fra del 7: PowerShell For Nybegynnere (Del 7): Røret (og mange eksempler å leke med)

Gjennomgang

Hvor-Objekt er alltid på høyre side av røret. Filtrering til venstre. Hvis du har valget mellom et filter på venstre side av røret eller Hvor-Objekt på høyre side, velg deretter venstre side.

Øvelse

her er øvelsen til neste del.

Where-Object:

Bruk Get-Service og Where-Object for å vise bare tjenester som kjører.

Filter (Active Directory kreves):

Bruk Filterparameteren til å få alle brukere som er deaktivert.

Se deg neste gang på emnet: PowerShell For Nybegynnere (Del 11): Ha det gøy med PowerShell-Stasjoner

Patrick Gruenauer, Mvp PowerShell

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.