PowerShell pro Začátečníky (Část 10): Filtrování a Kde-Objekt

už Jsme se naučili hodně o PowerShell. Naposledy jsme pracovali s WMI: PowerShell pro začátečníky (Část 9): Získejte vše z Windows s PowerShell a WMI nyní je podle mého názoru nejlepší čas zaměřit se na téma „filtrování pomocí PowerShell“. Ale nejprve se podívejme na cvičení z poslední části.

všechny díly série naleznete zde: PowerShell pro Začátečníky (Série)

Recenze (Část 9)

Tady je zadání a řešení z část 9:

Načíst informace o pevném disku. Použijte Get-WmiObject nebo Get-CimInstance. Nejprve vyhledejte objekt WMI a jakmile jej najdete, zobrazí název, oddíly, Model, Firmware a sériové číslo.

nejprve musíme zjistit název instance WMI. Vzhledem k tomu, že úloha se týká pevného disku, mohli bychom hledat například *disk*.

Get-WmiObject *disk* -List

Unbenannt.PNG

Win32_DiskDrive zní dobře. Vzpomeňte si na dvě metody krok od části 8 pro získání více z PowerShell:

Get-CimInstance win32_diskdrive | Get-Member

Zde najdete vhodné atributy. Nyní použijte Select-Object, aby si je všechny.

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

Unbenannt.PNG

recenze

WMI (nástroje pro správu systému Windows) poskytuje přístup ke čtení a zápisu téměř ke všem nastavením systému Windows. Existují dva důležité rutiny: Get-WmiObject a Get-CimInstance.

proč filtrování?

filtrování je klíčovou technologií v PowerShell. Jakmile víte, jak filtrovat, získáte více z PowerShell.

no, mým úkolem pro tuto část je vysvětlit, proč je filtrování důležité. Ok řekněme, že máte více než jeden pevný disk. Výše uvedený výstup zobrazuje všechny pevné disky. Chcete však například zobrazit pouze pevné disky Samsung.

Unbenannt.PNG

proč byste to chtěli udělat? Možná se vás váš šéf zeptá, kolik disků Samsung se používá. Na všech počítačích. Pamatujte, že WMI a PowerShell vám umožňují provádět vzdálené dotazy. Ok zpět k tématu. Chceme pouze Samsung SSD s 500 GB. Sledujte parametr filtru!

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

Unbenannt.PNG

následující je trochu neobvyklé a pro pokročilejší pitomce PowerShell, ale proč ne? Následující příkaz získá všechny SSD disky Samsung ze všech počítačů domény, ale ne ze serverů.

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

Pokud si vaši kolegové myslí, že čelíte neřešitelnému problému, stačí stisknout tlačítka a ukázat jim, co můžete udělat. 😉

Ok, pojďme na příklady pro začátečníky.

filtrování objektů

pamatujete si příkaz Get-ChildItem? Tento příkaz jsem v této sérii používal velmi často.

Pokud spustíte Get-Help Get-ChildItem, najdete v nápovědě mnoho příkladů filtrování.

Get-Help Get-ChildItem -Online

dávám přednost použití místní nápovědy.

Get-Help Get-ChildItem -Examples

Unbenannt.PNG

co jsme se zatím naučili?

filtrování je klíčovou technologií v PowerShell. Jakmile pochopíte, jak filtrovat, získáte více z PowerShell.

filtrování objektů služby Active Directory

Pokud jste It-Pro, pravděpodobně pracujete v prostředí služby Active Directory. Filtrování je klíčovou technikou při práci s objekty služby Active Directory.

následující příkaz používá Filtr parametr, aby se všichni uživatelé, které jsou vypnuty:

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

Unbenannt.PNG

možná se divíte, jak znám názvy atributů? Zapamatujte si metodu 2 kroků, abyste získali více z objektů: 1. použijte Get-Member 2. použijte Select-Object.

Unbenannt.PNG

parametr filtru

pojďme se rozhlédnout. Které příkazy používají parametr filtr? Všimněte si, že jsem na řadiči domény.

Get-Command -ParameterName Filter

jak vidíte, parametr filtru se většinou používá v příkazech služby Active Directory. A musím přiznat, že parametr filtru jsem vždy používal pouze pro službu Active Directory. Tak to prostě je. Soustřeďme se tedy na Active Directory. Řekněme, že chceme všechny počítače domény (operační systém serveru a klientský operační systém) seřazené podle operačního systému. K tomu musíme použít parametr filtr s *.

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

Unbenannt.PNG

z hlediska filtrování to byl jednoduchý úkol.

metoda filtrování

nyní se snažíme získat všechny počítače s nainstalovaným systémem Windows 10. Za tímto účelem musíme parametr filtru umístit do zakřivených závorek.

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

je čas rozebrat podrobnosti.

závorky

vložte filtr do zakřivených závorek.

Unbenannt.PNG

atributy

dále zjistěte název vlastnosti (atributy). Již jsme o tom diskutovali v PowerShell pro začátečníky (Část 8): síla PowerShell-kontakt s objekty(Get-Member, Select-Object). Pamatujte na dvoustupňovou metodu!

Unbenannt.PNG

Get-ADComputer client01 -Properties * | Get-Member

Unbenannt.PNG

boční poznámka: poznamenejte si parametr vlastnosti. Ve službě Active Directory nejsou ve výchozím nastavení zobrazeny všechny vlastnosti.

operátoři

dále používají operátor.

Unbenannt.PNG

operátor může být-like, – as, – equal, – ne a tak dále … pro více informací o parametrech typu

help about_operators

otevře se textový soubor uložený v počítači.

příkaz

Pokud chceme něco filtrovat, potřebujeme podmínku. Tato podmínka musí být uvedena v uvozovkách.

Unbenannt.PNG

recenze

Pokud pracujete s filtry, podívejte se nejprve do sekce Nápověda. Filtry jsou obvykle umístěny v závorkách. Často se také používá operátor.

některé další příklady filtrů … bez velkého mluvení …

hledání uživatelů, kteří mají špatný počet hesel 0. Zde je příklad účtu Petra:

Unbenannt.PNG

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

Unbenannt.PNG

vyhledávání uživatelů, kteří mají špatný počet hesel 0 a jsou povoleni. (Uvidíte, že Petra není povolena).

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

Unbenannt.PNG

Zobrazit všechny počítače domény Windows Server, ale pouze ty, které jsou se systémem Windows Server 2016 a jejichž jména začínají na DC.

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

Unbenannt.PNG

ale někdy musíme najít jinou cestu. Konkrétně, když není k dispozici žádné filtrování. Pak použijeme kde-objekt.

filtrování pomocí kde-Object

kde-Object je vždy na pravé straně potrubí. Filtrování vlevo. Co to znamená, klady a zápory na konci příspěvku. Pro tuto část se zaměříme na to, kde-objekt.

zde je několik příkladů z Nápovědy PowerShell.

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

chtěl bych však použít příklad z jednoho ze svých příspěvků.

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

Unbenannt.PNG

věnujte pozornost HotFixID. Odkazuje na atribut.

doporučený postup (kvůli zpětné kompatibilitě) vypadá takto:

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

Unbenannt.PNG

je tu něco nového. Co znamená$_?

$_ je proměnná, která iteruje nad každým objektem/prvkem předaným z předchozího (potrubí). Jednoduše řečeno: vezměte hotfixID z každého objektu, který pochází z potrubí.

filtrování vs. kde-Object

Pokud není k dispozici žádný filtr, použijte kde-Object. Pokud jste schopni použít filtr na levé straně potrubí, použijte jej! Proč? No, je rozdíl, zda pošlete 1000 objektů přes potrubí nebo jen 500, v případě, kde-objekt všechny objekty musí projít potrubím a teprve pak jsou filtrovány. Pamatujte potrubí od část 7: PowerShell pro Začátečníky (Část 7): Potrubí (a mnoho příkladů hrát s)

Recenze

Kde-Objekt je vždy na pravé straně potrubí. Filtrování vlevo. Pokud máte na výběr mezi filtrem na levé straně potrubí nebo kde-objekt na pravé straně, vyberte levou stranu.

cvičení

zde je cvičení do další části.

kde-Object:

použijte Get-Service a kde-Object k zobrazení pouze spuštěných služeb.

filtr (vyžaduje se Active Directory):

pomocí parametru filtr získáte všechny uživatele, kteří jsou zakázáni.

Uvidíme se příště u tématu: PowerShell pro začátečníky (Část 11): zábava s PowerShell disky

Patrick Gruenauer, MVP PowerShell

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.