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
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
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.
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
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
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
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.
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
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.
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!
Get-ADComputer client01 -Properties * | Get-Member
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.
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.
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:
Get-ADUser -Filter {badpwdcount -eq '0'} | Select-Object Name
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
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*')}
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*
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*'}
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