Vi har allerede lært meget om Strømshell. Sidste gang vi arbejdede med MVM for begyndere (Del 9): Hent det hele fra vinduer med MVM og MVM nu er det efter min mening det bedste tidspunkt at fokusere på emnet “filtrering med MVM”. Men først, lad os se på øvelsen fra den sidste del.
alle dele af serien kan findes her: For begyndere (serie)
anmeldelse (Del 9)
Her er opgaven og løsningen fra Del 9:
Hent oplysninger om din harddisk. Brug Get-Vmiobject eller Get-CimInstance. Først skal du søge efter objektet, og når du har fundet det, skal du vise navnet, partitionerne, modellen, programmet og serienummeret.
for det første skal vi finde ud af navnet på VVM-instansen. Da opgaven refererer til harddisken, kunne vi f.eks.
Get-WmiObject *disk* -List
Vind32_diskdrive lyder godt. Husk totrinsmetoden fra Del 8 for at få mere ud af Kraftshell:
Get-CimInstance win32_diskdrive | Get-Member
der finder du de relevante attributter. Brug nu Select-Object til at få dem alle.
Get-CimInstance Win32_DiskDrive | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
anmeldelse
giver læse-og skriveadgang til næsten alle vinduer indstillinger. Der er to vigtige cmdlet ‘ er: Get-Vmiobject og Get-CimInstance.
hvorfor filtrering?
filtrering er en nøgleteknologi i Kraftshell. Når du ved, hvordan du filtrerer, får du mere ud af Strømshell.
Nå, min opgave for denne del er at forklare, hvorfor filtrering er vigtig. Ok lad os sige, at du har mere end en harddisk. Udgangen ovenfor viser dig alle harddiske. Men du vil kun vise Samsung harddiske, for eksempel.
hvorfor vil du gøre dette? Måske spørger din chef dig, hvor mange Samsung-diske der er i brug. På alle computere. Husk, at vi gør det muligt for dig at foretage fjernforespørgsler. Ok tilbage til emnet. Vi ønsker kun Samsung SSD med 500 GB. Se filterparameteren!
Get-CimInstance Win32_DiskDrive -Filter "Model='Samsung SSD 850 EVO 500GB'" | Select-Object Name,Partitions, Size,Model,FirmwareRevision,SerialNumber
følgende er lidt ud over det sædvanlige og for mere avancerede Strømshell nørder, men hvorfor ikke? Følgende kommando får alle Samsung SSD ‘ er fra alle domænecomputere, 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 over for et uløseligt problem, skal du bare trykke på knapperne og vise dem, hvad du kan gøre. okay, lad os gå til eksemplerne for begyndere.
filtrering af objekter
kan du huske kommandoen Get-ChildItem? Jeg har brugt denne kommando meget ofte i denne serie.
Hvis du kører Get-Help Get-ChildItem, finder du en masse filtreringseksempler i hjælpen.
Get-Help Get-ChildItem -Online
Jeg foretrækker at bruge den lokale hjælp.
Get-Help Get-ChildItem -Examples
Hvad har vi lært indtil videre?
filtrering er en nøgleteknologi i Kraftshell. Når du først har forstået, hvordan du filtrerer, får du mere ud af Strømshell.
filtrering af Active Directory-objekter
Hvis du er en IT-Pro, arbejder du sandsynligvis i et Active Directory-miljø. Filtrering er en nøgleteknik, når du arbejder med Active Directory-objekter.
følgende kommando bruger Filterparameteren til at få alle brugere, der er deaktiveret:
Get-ADUser -Filter {enabled -eq 'false'} | Select-Object Name
du undrer dig måske over, hvordan jeg kender attributnavnene? Husk 2-trins metode til at få mere ud af objekter: 1. brug Get-medlem 2. brug Vælg-objekt.
Filterparameteren
lad os se os omkring. Hvilke kommandoer bruger filterparameteren? Bemærk, at jeg er på en domænecontroller.
Get-Command -ParameterName Filter
som du kan se, bruges filterparameteren mest i Active Directory-kommandoer. Og jeg må indrømme, at jeg altid har brugt filterparameteren kun til Active Directory. Sådan er det. Så lad os koncentrere os om Active Directory. Sig, at vi vil have alle Domænecomputere (serveroperativsystem og Klientoperativsystem) sorteret efter operativsystem. Til dette skal vi bruge filterparameteren med *.
Get-ADComputer -Filter * -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address | Sort-Object OperatingSystem | Select-Object Name,OperatingSystem
med hensyn til filtrering var dette en simpel opgave.
Filtreringsmetoden
nu forsøger vi at få alle de computere, der har vinduer 10 installeret. Til dette skal vi sætte filterparameteren i buede parenteser.
Get-ADComputer -Filter {operatingsystem -like '*windows 10*'}
det er tid til at nedbryde detaljerne.
beslagene
Sæt filteret i buede beslag.
attributterne
find derefter navnet på egenskaber (attributter). Vi har allerede diskuteret det i Kraftshell for begyndere (Del 8): kraften i Kraftshell – at komme i kontakt med objekter (Get-medlem, Vælg-objekt). Husk de to trin metode!
Get-ADComputer client01 -Properties * | Get-Member
side Bemærk: Bemærk egenskabsparameteren. I Active Directory vises ikke alle egenskaber som standard.
operatørerne
næste brug en operatør.
en operatør kunne være-som, -som, -lige, -ne og så videre … for mere om parametre type
help about_operators
Dette åbner en tekstfil, der er gemt på din computer.
erklæringen
Hvis vi vil filtrere noget, har vi brug for en betingelse. Denne betingelse skal placeres i anførselstegn.
gennemgå
Hvis du arbejder med filtre, skal du først se afsnittet Hjælp. Filtre placeres normalt i parentes. Ofte bruges en operatør også.
nogle flere Filtereksempler … uden meget at tale …
søgning efter brugere, der har et dårligt antal adgangskoder på 0. Her er et eksempel på Petras konto:
Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name
søgning efter brugere, der har et dårligt antal adgangskoder på 0 og er aktiveret. (Du vil se, at Petra ikke er aktiveret).
Get-ADUser -Filter {(badpwdcount -eq '0') -and (enabled -eq 'true')} | Select-Object Name
Vis alle vinduer Server domæne computere, men kun dem, der kører vinduer Server 2016 og hvis navne starter med DC.
Get-ADComputer -Filter {(operatingsystem -like '*2016*') -and (name -like 'dc*')}
men nogle gange er du nødt til at finde en anden måde. Nemlig når der ikke er nogen filtrering tilgængelig. Så bruger vi hvor-objekt.
filtrering med hvor-objekt
hvor-objekt er altid på højre side af røret. Filtrering til venstre. Hvad det betyder, fordele og ulemper i slutningen af indlægget. For denne del vil vi koncentrere os om hvor-objekt.
Her er nogle eksempler fra hjælpen.
Get-Process | Where-Object {$_.handles -gt 200 -and $_.name -eq "svchost"}
Get-ChildItem c:\scripts | Where-Object {$_.length -gt 100000}
Jeg vil dog gerne bruge et eksempel fra et af mine bidrag.
Get-Hotfix | Where-Object HotfixID -like KB31*
Vær opmærksom på Hotfiksid. Det refererer til en attribut.
den anbefalede procedure (på grund af bagudkompatibiliteten) ser sådan ud:
Get-Hotfix | Where-Object {$_.HotfixID -like 'KB31*'}
Der er noget nyt nu. Hvad betyder$_?
$ _ er en variabel, der gentager over hvert objekt/element, der er passeret fra det foregående (rør). Kort sagt: tag hotfikset fra hvert objekt, der kommer fra røret.
filtrering vs. hvor-objekt
Hvis der ikke findes noget filter, skal du bruge hvor-objekt. Hvis du er i stand til at bruge et filter på venstre side af røret, skal du bruge det! Hvorfor? Nå, det er en forskel, om du sender 1000 genstande over røret eller kun 500, i tilfælde af hvor-objekt alle objekter skal passere gennem røret, og først derefter filtreres de. Husk røret fra Del 7: Strømshell til begyndere (Del 7): røret (og mange eksempler at lege med)
anmeldelse
hvor-objekt er altid på højre side af røret. Filtrering til venstre. Hvis du har valget mellem et filter på venstre side af røret eller hvor-objekt på højre side, skal du vælge venstre side.
øvelse
Her er øvelsen til næste del.
hvor-objekt:
brug Get-Service og hvor-Object til kun at vise tjenester, der kører.
Filter (Active Directory påkrævet):
brug filterparameteren til at få alle brugere, der er deaktiveret.
Vi ses næste gang på emnet: Strømshell til begyndere (Del 11): have det sjovt med Strømshelldrev
Patrick Gruenauer, MVP Strømshell