PowerShell kezdőknek (10. rész): szűrés és hol-objektum

már sokat tanultunk a Powershellről. Legutóbb a WMI-vel dolgoztunk: PowerShell kezdőknek (9.rész): Szerezd meg mindent a Windows-ból a PowerShell-vel és a WMI-vel most véleményem szerint ez a legjobb alkalom, hogy a “szűrés a PowerShell-vel”témára összpontosítsunk. De először nézzük meg a gyakorlatot az utolsó részből.

a sorozat minden része itt található: PowerShell kezdőknek (sorozat)

áttekintés (9. rész)

itt található a hozzárendelés és a megoldás a 9.részből:

információk lekérése a merevlemezről. Használja a Get-WmiObject vagy a Get-CimInstance alkalmazást. Először keresse meg a WMI objektumot, és miután megtalálta, mutassa meg a nevet, a partíciókat, a modellt, a Firmware-t és a sorozatszámot.

először meg kell találnunk a WMI példány nevét. Mivel a feladat a merevlemezre vonatkozik, kereshetjük például a *disk* kifejezést.

Get-WmiObject *disk* -List

Unbenannt.PNG

Win32_DiskDrive jól hangzik. Emlékezz a 8. rész kétlépéses módszerére, hogy minél többet hozhass ki a Powershellből:

Get-CimInstance win32_diskdrive | Get-Member

ott megtalálod a megfelelő attribútumokat. Most használja Select-Object, hogy mindet.

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

Unbenannt.PNG

Review

a WMI (Windows Management Instruments) szinte az összes Windows-beállításhoz írási és olvasási hozzáférést biztosít. Két fontos parancsmag van: Get-WmiObject és Get-CimInstance.

miért szűrés?

a szűrés kulcsfontosságú technológia a PowerShellben. Ha már tudja, hogyan kell szűrni, többet fog kihozni a PowerShell-ből.

nos, ennek a résznek az a feladata, hogy elmagyarázzam, miért fontos a szűrés. Ok tegyük fel, hogy több mint egy merevlemezed van. A fenti kimenet megmutatja az összes merevlemezt. De például Csak a Samsung merevlemezeit szeretné megjeleníteni.

Unbenannt.PNG

miért akarod ezt csinálni? Talán a főnöke megkérdezi, hogy hány Samsung lemezt használnak. Minden számítógépen. Ne feledje, hogy a WMI és a PowerShell lehetővé teszi távoli lekérdezések elvégzését. Ok vissza a témához. Csak az 500 GB-os Samsung SSD-t akarjuk. Nézze meg a szűrő paramétert!

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

Unbenannt.PNG

az alábbiak egy kicsit szokatlanok a fejlettebb PowerShell majmok számára, de miért ne? A következő parancs megkapja az összes Samsung SSD-t az összes tartományi számítógépről, de nem a szerverekről.

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

ha kollégái úgy gondolják, hogy megoldhatatlan problémával szembesül, csak nyomja meg a gombokat, és mutassa meg nekik, mit tehet. ok, menjünk a kezdőknek szóló példákhoz.

objektumok szűrése

emlékszel a Get-ChildItem parancsra? Ezt a parancsot nagyon gyakran használtam ebben a sorozatban.

ha futtatja a Get-Help Get-ChildItem programot, sok szűrési példát talál a Súgóban.

Get-Help Get-ChildItem -Online

inkább a helyi súgót használom.

Get-Help Get-ChildItem -Examples

Unbenannt.PNG

mit tanultunk eddig?

a szűrés kulcsfontosságú technológia a PowerShellben. Miután megértette, hogyan kell szűrni, többet fog kihozni a PowerShell-ből.

Active Directory objektumok szűrése

Ha Ön IT-Pro, akkor valószínűleg Active Directory környezetben dolgozik. A szűrés kulcsfontosságú technika az Active Directory objektumokkal való munka során.

a következő parancs a Szűrőparamétert használja az összes letiltott felhasználó lekéréséhez:

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

Unbenannt.PNG

lehet, hogy kíváncsi, hogyan tudom az attribútum nevét? Ne feledje a 2 lépéses módszert, hogy többet hozzon ki az objektumokból: 1. használja a Get-Member 2-t. használja a Select-Object lehetőséget.

Unbenannt.PNG

A szűrő paraméter

nézzünk körül. Mely parancsok használják a szűrő paramétert? Vegye figyelembe, hogy tartományvezérlőn vagyok.

Get-Command -ParameterName Filter

mint látható, a szűrő paramétert leginkább az Active Directory parancsokban használják. Be kell vallanom, hogy a szűrő paramétert mindig csak az Active Directoryhoz használtam. Ez így van. Koncentráljunk az Active Directoryra. Tegyük fel, hogy az összes Domain számítógépet (szerver operációs rendszer és kliens operációs rendszer) operációs rendszer szerint szeretnénk rendezni. Ehhez a szűrő paramétert kell használnunk * – val.

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

Unbenannt.PNG

a szűrés szempontjából ez egyszerű feladat volt.

A szűrési módszer

most megpróbáljuk megszerezni az összes számítógépet, amelyre telepítve van a Windows 10. Ehhez a szűrőparamétert ívelt zárójelbe kell helyezni.

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

ideje lebontani a részleteket.

a zárójelek

tegye a szűrőt ívelt zárójelbe.

Unbenannt.PNG

az attribútumok

következő megtudja a tulajdonságok (attribútumok) nevét. Már megvitattuk a PowerShell kezdőknek (8. rész): a PowerShell ereje – kapcsolatba lépni az objektumokkal (Get-Member, Select-Object). Ne feledje a kétlépcsős módszert!

Unbenannt.PNG

Get-ADComputer client01 -Properties * | Get-Member

Unbenannt.PNG

oldalsó megjegyzés: vegye figyelembe a tulajdonságok paramétert. Az Active Directoryban alapértelmezés szerint nem minden tulajdonság jelenik meg.

az operátorok

legközelebb operátort használnak.

Unbenannt.PNG

egy operátor lehet-like, -as, -equal, – ne És így tovább … További információ a paraméterekről típus

help about_operators

Ez megnyit egy szöveges fájlt, amely a számítógépen van tárolva.

az utasítás

ha valamit szűrni akarunk, akkor feltételre van szükségünk. Ezt a feltételt idézőjelbe kell tenni.

Unbenannt.PNG

Review

ha szűrőkkel dolgozik, először olvassa el a Súgó részt. A szűrőket általában zárójelben helyezik el. Gyakran operátort is használnak.

néhány további szűrési példa … sok beszélgetés nélkül …

olyan felhasználók keresése,akiknek rossz jelszava 0. Íme egy példa Petra fiókjára:

Unbenannt.PNG

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

Unbenannt.PNG

olyan felhasználók keresése, akiknek rossz jelszava 0, és engedélyezve vannak. (Látni fogja, hogy Petra nincs engedélyezve).

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

Unbenannt.PNG

megjeleníti az összes Windows Server tartományi számítógépet, de csak azokat, amelyek Windows Server 2016 rendszert futtatnak, és amelyek neve DC-vel kezdődik.

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

Unbenannt.PNG

de néha meg kell találnunk egy másik utat. Nevezetesen, ha nem áll rendelkezésre szűrés. Ezután használjuk a Hol-objektumot.

szűrés Where-Object

Where-Object mindig a cső jobb oldalán található. Szűrés a bal oldalon. Mit jelent ez, az érvek és ellenérvek a poszt végén. Erre a részre fogunk koncentrálni, ahol-tárgy.

íme néhány példa a PowerShell súgójából.

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

azonban szeretnék egy példát használni az egyik hozzászólásomból.

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

Unbenannt.PNG

figyeljen a Gyorsjavításra. Ez egy attribútumra utal.

az ajánlott eljárás (a visszamenőleges kompatibilitás miatt) így néz ki:

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

Unbenannt.PNG

van valami új most. Mit jelent a$_?

$_ egy változó, amely az előzőből átadott minden objektum/elem felett iterál (cső). Egyszerűen fogalmazva: vegye ki a gyorsjavítást minden olyan tárgyból, amely a csőből származik.

szűrés vs. Where-Object

ha nem áll rendelkezésre szűrő, használja a Where-Object funkciót. Ha tudja használni a szűrőt a bal oldalon a cső használja! Miért? Nos, különbség, hogy 1000 tárgyat küld a cső fölé, vagy csak 500-at, a Where-Object esetében az összes objektumnak át kell haladnia a csövön, és csak akkor szűrik őket. Emlékezz a csőre a 7. részből: PowerShell kezdőknek (7. rész): a cső (és sok példa, amellyel játszani lehet)

Review

ahol-az objektum mindig a cső jobb oldalán található. Szűrés a bal oldalon. Ha választhat a cső bal oldalán lévő szűrő vagy a jobb oldalon lévő hol-objektum között, akkor válassza a bal oldalt.

gyakorlat

itt van a gyakorlat til következő rész.

Where-Object:

a Get-Service és Where-Object használatával csak futó szolgáltatásokat jeleníthet meg.

szűrő (Active Directory szükséges):

használja a szűrő paramétert, hogy minden felhasználó, aki le van tiltva.

találkozunk legközelebb a témában: PowerShell kezdőknek (11. rész): szórakozás a PowerShell meghajtókkal

Patrick Gruenauer, MVP PowerShell

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.