PowerShell for Beginners (Part 10): Filtering and Where-Object

We have already learned a lot about PowerShell. Viimeksi kun työskentelimme WMI: PowerShell for Beginners (Osa 9): Hanki kaikki Windowsista Powershellilla ja WMI nyt, mielestäni on paras aika keskittyä aiheeseen ”suodatus Powershellilla”. Mutta katsotaan ensin harjoitusta viimeisestä osasta.

sarjan kaikki osat löytyvät täältä: PowerShell for Beginners (Series)

Review (Part 9)

tässä on tehtävä ja ratkaisu osasta 9:

hae tietoa kiintolevystäsi. Käytä Get-WmiObject-tai Get-Cimininstance-ohjelmaa. Etsi ensin WMI-objekti ja kun olet löytänyt sen, Näytä nimi, osiot, malli, Firmware ja sarjanumero.

ensin on selvitettävä WMI-instanssin nimi. Koska tehtävä viittaa kiintolevyyn, voisimme etsiä esimerkiksi * disk*.

Get-WmiObject *disk* -List

Unbenannt.PNG

Win32_DiskDrive kuulostaa hyvältä. Muista kaksivaiheinen menetelmä osasta 8 saadaksesi enemmän irti Powershellista:

Get-CimInstance win32_diskdrive | Get-Member

Sieltä löydät sopivat attribuutit. Nyt käytä Select-Object saada ne kaikki.

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

Unbenannt.PNG

arvostelu

WMI (Windows Management Instruments) tarjoaa luku-ja kirjoitusoikeuden lähes kaikkiin Windowsin asetuksiin. Tärkeitä cmdletejä on kaksi: Get-WmiObject ja Get-Cimininstance.

miksi suodatus?

suodatus on keskeinen tekniikka Powershellissa. Kun osaat suodattaa, saat enemmän irti Powershellista.

no, minun tehtäväni tässä osassa on selittää, miksi suodatus on tärkeää. Ok oletetaan, että sinulla on enemmän kuin yksi harddisk. Yllä oleva tuloste näyttää kaikki kiintolevyt. Mutta haluat näyttää vain Samsungin kiintolevyt, esimerkiksi.

Unbenannt.PNG

miksi haluat tehdä näin? Ehkä pomosi kysyy, kuinka monta Samsungin levyä on käytössä. Kaikilla tietokoneilla. Muista, että WMI ja PowerShell mahdollistavat etäkyselyiden tekemisen. Palataan aiheeseen. Haluamme vain Samsung SSD 500 Gt. Katso suodatinparametria!

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

Unbenannt.PNG

seuraava on hieman tavallisesta poikkeava ja edistyneemmille PowerShell-nörteille, mutta miksi ei? Seuraava komento saa kaikki Samsungin SSD-levyt kaikista domain-tietokoneista, mutta ei palvelimilta.

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

Jos työkaverisi luulevat, että sinulla on ratkaisematon ongelma, paina nappeja ja näytä, mihin pystyt. 😉

Ok, mennään esimerkkeihin aloittelijoille.

Filtering Objects

Muistatko Get-ChildItem-komennon? Olen käyttänyt tätä komentoa hyvin usein tässä sarjassa.

Jos suoritat Get-Help Get-ChildItem-ohjelman, löydät ohjeesta paljon suodatusesimerkkejä.

Get-Help Get-ChildItem -Online

käytän mieluummin paikallista apua.

Get-Help Get-ChildItem -Examples

Unbenannt.PNG

mitä olemme oppineet tähän mennessä?

suodatus on keskeinen tekniikka Powershellissa. Kun ymmärrät kuinka suodattaa, saat enemmän irti Powershellista.

suodatus Active Directory-objektit

Jos olet IT-ammattilainen, työskentelet todennäköisesti Active Directory-ympäristössä. Suodatus on keskeinen tekniikka työskenneltäessä Active Directory-objektien kanssa.

seuraava komento käyttää Suodatinparametria kaikkien käytöstä poistettujen käyttäjien saamiseksi:

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

Unbenannt.PNG

saatat ihmetellä, mistä tiedän attribuuttien nimet? Muista 2-vaiheinen menetelmä saada enemmän irti esineitä: 1. käytä Get-jäsentä 2. käytä Select-objektia.

Unbenannt.PNG

Suodatinparametri

katsotaan ympärilleen. Mitkä komennot käyttävät suodatinparametria? Huomaa, että olen verkkotunnuksen ohjain.

Get-Command -ParameterName Filter

kuten näkyy, Suodatinparametria käytetään enimmäkseen Active Directory-komennoissa. Ja minun on myönnettävä, että olen aina käyttänyt suodatinparametria vain Active Directorylle. Niin se vain on. Keskitytään siis Active Directoryyn. Sano, että haluamme kaikki toimialueen Tietokoneet (palvelimen käyttöjärjestelmä ja asiakkaan käyttöjärjestelmä) lajiteltu käyttöjärjestelmä. Tätä varten meidän on käytettävä suodatinparametria *.

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

Unbenannt.PNG

suodattamisen kannalta tämä oli yksinkertainen tehtävä.

suodatusmenetelmä

nyt yritetään saada kaikki tietokoneet, joissa on Windows 10 asennettuna. Tätä varten meidän täytyy laittaa suodatin parametri kaareva suluissa.

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

on aika eritellä yksityiskohtia.

suluissa

suodatin laitetaan kaareviin kannattimiin.

Unbenannt.PNG

attribuutit

selvittävät seuraavaksi ominaisuuksien (attribuuttien) nimen. Olemme jo keskustelleet siitä PowerShell for Beginners (Part 8): The Power of PowerShell – Getting in Touch with Objects (Get-Member, Select-Object). Muista kaksivaiheinen menetelmä!

Unbenannt.PNG

Get-ADComputer client01 -Properties * | Get-Member

Unbenannt.PNG

sivuhuomautus: huomaa ominaisuudet-parametri. Active Directoryssa kaikki ominaisuudet eivät näy oletusarvoisesti.

operaattorit

käyttävät seuraavaksi operaattoria.

Unbenannt.PNG

operaattori voi olla-like, -as, -equal, -ne ja niin edelleen … lisätietoja parametreista tyyppi

help about_operators

Tämä avaa tekstitiedoston, joka on tallennettu tietokoneellesi.

lauseke

Jos haluamme suodattaa jotain, tarvitsemme ehdon. Tämä ehto on merkittävä lainausmerkkeihin.

Unbenannt.PNG

arvostelu

Jos käytät suodattimia, katso Ohje-osio ensin. Suodattimet sijoitetaan yleensä sulkeisiin. Usein käytetään myös operaattoria.

lisää Suodatusesimerkkejä … ilman sen kummempaa puhetta …

etsii käyttäjiä, joiden salasanamäärä on huono 0. Tässä esimerkki Petran kertomuksesta:

Unbenannt.PNG

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

Unbenannt.PNG

etsii käyttäjiä, joilla on huono salasanamäärä 0 ja jotka ovat käytössä. (Näet Petra ei ole käytössä).

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

Unbenannt.PNG

näyttää kaikki Windows Server-toimialueen tietokoneet, mutta vain ne, joissa on käytössä Windows Server 2016 ja joiden nimet alkavat DC: llä.

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

Unbenannt.PNG

mutta joskus on löydettävä toinen keino. Nimittäin silloin, kun suodatusta ei ole saatavilla. Sitten käytämme missä-objekti.

suodatus missä-objekti

missä-objekti on aina putken oikealla puolella. Suodatus vasemmalla. Mitä se tarkoittaa, hyvät ja huonot puolet lopussa postitse. Tässä osassa keskitymme missä-objekti.

Tässä muutamia esimerkkejä PowerShell-ohjeesta.

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

haluaisin kuitenkin käyttää esimerkkinä erästä puheenvuoroani.

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

Unbenannt.PNG

kiinnitä huomiota Hotfixidiin. Se viittaa attribuuttiin.

suositeltava menettely (taaksepäin yhteensopivuuden vuoksi) näyttää tältä:

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

Unbenannt.PNG

nyt on jotain uutta. Mitä $_ tarkoittaa?

$_ on muuttuja, joka iteroi jokaisen edelliseltä johdetun objektin / elementin päälle (putki). Yksinkertaisesti sanottuna: ota hotfixID jokaisesta esineestä, joka tulee putkesta.

Filtering vs. Where-Object

Jos suodatinta ei ole saatavilla, käytä Where-Object-suodatinta. Jos voit käyttää suodatinta putken vasemmalla puolella, käytä sitä! Miksi? No, se on eri, lähetätkö 1000 objektia putken yli vai vain 500, Jos-objekti kaikkien objektien on kuljettava putken läpi ja vasta sitten ne suodatetaan. Remember the pipe from part 7: PowerShell for Beginners (Part 7): the Pipe (and many examples to play with)

Review

Where-Object is always on the right side of the pipe. Suodatus vasemmalla. Jos sinulla on mahdollisuus valita suodattimen vasemmalla puolella putken tai missä-objektin oikealla puolella, Valitse vasen puoli.

harjoitus

tässä harjoitellaan seuraavaan osaan asti.

missä-objekti:

käytä Get-palvelua ja missä-objektia näyttääksesi vain käynnissä olevat palvelut.

suodatin (Active Directory pakollinen):

käytä Suodatinparametria saadaksesi kaikki Käytöstä poistetut käyttäjät.

see you next time at the topic: PowerShell for Beginners (Part 11): Having fun with PowerShell Drives

Patrick Gruenauer, MVP PowerShell

Vastaa

Sähköpostiosoitettasi ei julkaista.