Geek Iskola: A PowerShell gyűjteményeinek használata

Tartalomjegyzék:

Geek Iskola: A PowerShell gyűjteményeinek használata
Geek Iskola: A PowerShell gyűjteményeinek használata

Videó: Geek Iskola: A PowerShell gyűjteményeinek használata

Videó: Geek Iskola: A PowerShell gyűjteményeinek használata
Videó: Virtualization Explained 2024, Lehet
Anonim
Mivel a PowerShell a.NET-keretrendszeren alapul, és számos más technológiát foglal magában, mint például a WMI és a CIM, ugyanazok a dolgok mindig is többféle módon valósíthatók meg. Jöjjön hozzánk a rövid álláshoz, ahol megtanuljuk, hogyan válasszuk ki a legjobb módszert a feladatok elvégzéséhez.
Mivel a PowerShell a.NET-keretrendszeren alapul, és számos más technológiát foglal magában, mint például a WMI és a CIM, ugyanazok a dolgok mindig is többféle módon valósíthatók meg. Jöjjön hozzánk a rövid álláshoz, ahol megtanuljuk, hogyan válasszuk ki a legjobb módszert a feladatok elvégzéséhez.

Olvassa el a sorozatban szereplő cikkeket:

  • További információ a Windows PowerShell automatizálásáról
  • A PowerShell-ben található cmdletek használatának elsajátítása
  • A PowerShell objektumainak használata
  • Tanulási formázás, szűrés és összehasonlítás a PowerShell-ben
  • Tanulja meg a Remoting használatát a PowerShell programban
  • A PowerShell használata a számítógépes információk beszerzéséhez

És egész héten maradjon a sorozatban.

Batch Cmdlets használata

Korábban a sorozatban, mikor bemutattuk a csővezetékbe, megmutattuk, hogyan tudod elvenni az olyan objektumokat, amelyeket egy cmdlet kimenetként ad ki, és bemenetet ad egy másik cmdlethez valami hasonló módon:

Get-Process -Name notepad | Stop-Process

Ez a "jegyzettömb" nevét elpusztítja. De valószínűleg arra gondolsz, hogy a PowerShell képes egyetlen példányban megölni a jegyzettömb minden egyes példányát. A válasz a Stop-Process cmdlet segítségével történik.

help Stop-Process –Full

Image
Image

Ha a szintaxis szakaszban a kód utolsó sorát nézed meg, láthatjuk, hogy az InputObject paraméter elfogadja a [Process] típusú objektumot, és amikor megjelenik egy olyan típus, amelyet két szögletes zárójel követ, akkor azt jelenti, hogy a paraméter elfogadja egy vagy több az előző típusnál. Ebben az esetben egy vagy több folyamatobjektumot fogad el. Technikailag azt mondhatjuk, hogy az InputObject cmdlet elfogad egy folyamatot sor. Ha van olyan cmdlet, amely támogatja a kötegelt műveleteket ilyen módon, használja. Ez az első számú választás.

A WMI használata

Bár a WMI nem a legjobb technikai megoldás a Microsoft HQ-ból való szállításhoz, a második helyen áll a tárgyak gyűjteményével foglalkozó listán. A Win32_Process osztályból könnyen nyithatnánk a futó folyamatok listáját, így például:

Get-WmiObject –Class Win32_Process

Mivel a WMI-lekérdezés saját típusú objektumát adja vissza, meg kell keresnie egy olyan eljárást, amely leállíthatja a folyamatot, így lehetővé teszi a Get-Member számára.
Mivel a WMI-lekérdezés saját típusú objektumát adja vissza, meg kell keresnie egy olyan eljárást, amely leállíthatja a folyamatot, így lehetővé teszi a Get-Member számára.

Get-WmiObject –Class Win32_Process | Get-Member

Úgy tűnik, hogy a legközelebbi dolog megállítani a megszüntetési módszert, úgyhogy ennek kell lennie. Ha WMI-objektumon metódust szeretne hívni, egyszerűen pipálja be az Invoke-WmiMethod parancsra, és adja meg a módszer nevét.
Úgy tűnik, hogy a legközelebbi dolog megállítani a megszüntetési módszert, úgyhogy ennek kell lennie. Ha WMI-objektumon metódust szeretne hívni, egyszerűen pipálja be az Invoke-WmiMethod parancsra, és adja meg a módszer nevét.

Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate

Nagyszerű volt ez a trükk. Amikor a WMI-ben visszatérési értéket kapsz, ne felejtsd el, hogy a parancs sikeresen végrehajtódott.
Nagyszerű volt ez a trükk. Amikor a WMI-ben visszatérési értéket kapsz, ne felejtsd el, hogy a parancs sikeresen végrehajtódott.

Felsorolás

Ha nem tesz eleget a másik két módszernek, ha valamit meg kell tennie egy csomó objektumra, akkor felsorolhatja az egész objektumot, és minden egyes objektumon felléphet. Először meg kell találnia azt a módszert, amelyet egyetlen folyamat leállításához használni fog.

Get-Process | Get-Member -MemberType Method

Tökéletes, úgy tűnik, használhatjuk a Kill módszert, majd a ForEach-Object-be csövezhetjük őket.
Tökéletes, úgy tűnik, használhatjuk a Kill módszert, majd a ForEach-Object-be csövezhetjük őket.

Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}

Itt vettük meg az összes folyamatobjektumot, amelyet a Get-Process visszaküldött és átadta őket a ForEach-Object cmdletnek. Hasonlóan a Where-Object cmdlethez, a csővezeték minden egyes objektumát $ -val ábrázoltuk, amelyre a Kill () módszert hívhatjuk. Mindazok esetében, amelyekről elmondták és elvégezték, a gyűjtemény felsorolása sokkal lassabb, mint a fenti módszerek, és csak utolsó eredményként használható.
Itt vettük meg az összes folyamatobjektumot, amelyet a Get-Process visszaküldött és átadta őket a ForEach-Object cmdletnek. Hasonlóan a Where-Object cmdlethez, a csővezeték minden egyes objektumát $ -val ábrázoltuk, amelyre a Kill () módszert hívhatjuk. Mindazok esetében, amelyekről elmondták és elvégezték, a gyűjtemény felsorolása sokkal lassabb, mint a fenti módszerek, és csak utolsó eredményként használható.

összefoglalás

Választás egy

Get-Process -Name notepad | Stop-Process

Választás két

Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate

Három választás

Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}

Ez az egész ebben az időben emberek, látni a jövő héten több PowerShell szórakozást.

Ajánlott: