Geek Iskola: Ismerje meg a PowerShell munkahelyeinek használatát

Tartalomjegyzék:

Geek Iskola: Ismerje meg a PowerShell munkahelyeinek használatát
Geek Iskola: Ismerje meg a PowerShell munkahelyeinek használatát

Videó: Geek Iskola: Ismerje meg a PowerShell munkahelyeinek használatát

Videó: Geek Iskola: Ismerje meg a PowerShell munkahelyeinek használatát
Videó: The Best Torrent Client On Raspberry Pi: qBittorent installation and configuration - YouTube 2024, Április
Anonim
A PowerShell négyféle munkát végez: háttérmunkák, távoli munkák, WMI-munkák és ütemezett munkák. Csatlakozzon hozzánk, és megtudjuk, hogy ők, és hogyan tudjuk használni őket.
A PowerShell négyféle munkát végez: háttérmunkák, távoli munkák, WMI-munkák és ütemezett munkák. Csatlakozzon hozzánk, és megtudjuk, hogy ők, és hogyan tudjuk használni őket.

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
  • A PowerShell gyűjteményeinek használata

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

Háttér munkák

Eddig mindazt, amit a PowerShell-en belül mutatok be, szinkron volt, vagyis valamit beírunk a shellbe, és nem tehetünk sokat addig, amíg a parancs nem fejeződött be. Ebben az esetben a háttértárak bejövnek. A háttér elindításához a munka egyszerűen átír egy parancsfájlt a Start-Job cmdletre.

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}

Most szabadon megtehetjük, amit akarunk a shell alatt, amíg a parancsfájl blokk végrehajtja a háttérben.
Most szabadon megtehetjük, amit akarunk a shell alatt, amíg a parancsfájl blokk végrehajtja a háttérben.
Amikor új feladatot indít el, a PowerShell új munkakör-objektumot hoz létre, amely az adott feladatot képviseli. A Get-Job cmdlet futtatásával bármikor megkaphatja az összes munkahely listáját.
Amikor új feladatot indít el, a PowerShell új munkakör-objektumot hoz létre, amely az adott feladatot képviseli. A Get-Job cmdlet futtatásával bármikor megkaphatja az összes munkahely listáját.
A munkaköri objektumok megmondják a feladatok állapotáról. Például a fenti képernyőképen láthatjuk, hogy van egy BackgroundJob nevű GetFileList, amely még mindig fut, de már elkezdte az adatok visszaküldését. Ha bármikor úgy döntesz, hogy a munka túl hosszú ideig fut, egyszerűen megállíthatja azt a Stop-Job segítségével.
A munkaköri objektumok megmondják a feladatok állapotáról. Például a fenti képernyőképen láthatjuk, hogy van egy BackgroundJob nevű GetFileList, amely még mindig fut, de már elkezdte az adatok visszaküldését. Ha bármikor úgy döntesz, hogy a munka túl hosszú ideig fut, egyszerűen megállíthatja azt a Stop-Job segítségével.

Get-Job –Name GetFileList | Stop-Job

Image
Image

Azonban, ha abbahagyta a munkát, a rendelkezésre álló adatok mindaddig rendelkezésre állnak, amíg meg nem állítja azt. Van még egy szamár is. A PowerShell-ben, miután megkapja az eredményeket egy munkához, törölni fognak. Annak érdekében, hogy megmaradjon, meg kell adnia a Receive-Job tartani kapcsoló paraméterét.

Get-Job –Name GetFileList | Receive-Job –Keep

Miután befejezte a munkát, a legjobb gyakorlatot eltávolítani. A feladat eltávolításához egyszerűen pipálja ki a Remove-Job parancsmagot.
Miután befejezte a munkát, a legjobb gyakorlatot eltávolítani. A feladat eltávolításához egyszerűen pipálja ki a Remove-Job parancsmagot.

Get-Job –Name GetFileList | Remove-Job

Ez eltávolítja a Get-Job által visszaadott feladatok listájáról.

Image
Image

Távoli munkák

Néhány lecke régebben megvizsgáltuk, hogyan használhatunk remontot a PowerShell parancsok végrehajtására egy távoli gépen az Invoke-Command használatával, de tudtuk, hogy az Invoke-Command-ot is használhatod, hogy elindítsd a távoli feladatot a háttérben? Ehhez egyszerűen add hozzá az -AsJob paramétert a parancs végére:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

Ez egyszerű parancs volt, és már befejezte a végrehajtást, így megnézheted a munkánk állapotát.
Ez egyszerű parancs volt, és már befejezte a végrehajtást, így megnézheted a munkánk állapotát.
Hmm, úgy tűnik, nem sikerült. Ez hozza meg az első munkámat. Amikor létrehoz egy új munkát bármilyen típusú PowerShell, létrehoz egy szülő munka mellett egy gyermek munka minden olyan számítógép, amelyen a munkát ellen. Ha a Get-Job cmdletet használja, csak az szülő munkahelyeket jeleníti meg, és az állami tulajdon a legrosszabb forgatókönyv, ami azt jelenti, hogy ha a parancs csak száz számítógépből egy futtatáskor nem működik, akkor a szülő munkahelyi állapota azt fogja mondani nem sikerült. A gyermekmunkák listájának megtekintéséhez az IncludeChildJob paramétert kell használnia.
Hmm, úgy tűnik, nem sikerült. Ez hozza meg az első munkámat. Amikor létrehoz egy új munkát bármilyen típusú PowerShell, létrehoz egy szülő munka mellett egy gyermek munka minden olyan számítógép, amelyen a munkát ellen. Ha a Get-Job cmdletet használja, csak az szülő munkahelyeket jeleníti meg, és az állami tulajdon a legrosszabb forgatókönyv, ami azt jelenti, hogy ha a parancs csak száz számítógépből egy futtatáskor nem működik, akkor a szülő munkahelyi állapota azt fogja mondani nem sikerült. A gyermekmunkák listájának megtekintéséhez az IncludeChildJob paramétert kell használnia.
Image
Image

Ha közelebbről megnézed, akkor látni fogod, hogy a munka valójában csak egyetlen számítógépen sikertelen, ami a következő szamárhoz vezet. Amikor megpróbálja megkapni az eredményeket a feladatnál, ha megadja a szülő munkájának nevét vagy azonosítóját, a PowerShell visszaadja az adatokat az összes gyermek munkából. A probléma az, hogy ha valamelyik gyermek munkahelyén hiba történt, néhány piros szöveget hagyunk.

Ennek két módja van. Először is, ha tudod, hogy mely számítógépeken szeretnéd az eredményeket elérni, egyszerűen használd a Recieve -Job cmdlet ComputerName paraméterét.
Ennek két módja van. Először is, ha tudod, hogy mely számítógépeken szeretnéd az eredményeket elérni, egyszerűen használd a Recieve -Job cmdlet ComputerName paraméterét.

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

Alternatív megoldásként az eredményeket egy adott gyermektevékenységből is megkaphatja a munkaköri azonosítója segítségével.
Alternatív megoldásként az eredményeket egy adott gyermektevékenységből is megkaphatja a munkaköri azonosítója segítségével.

Get-Job -Id 3 –IncludeChildJob

Image
Image

Get-Job -Id 5 | Receive-Job –Keep

Image
Image

WMI munkák

A WMI munkái nagyjából ugyanazok, mint a távoli munkák, amelyek csak a -AsJob paramétert adják hozzá a Get-WmiObject cmdlethez.

Image
Image
Sajnos ez azt jelenti, hogy ugyanazok a gesztusok is vannak, amelyeket a Távoli munkák részben említettem.
Sajnos ez azt jelenti, hogy ugyanazok a gesztusok is vannak, amelyeket a Távoli munkák részben említettem.

Ütemezett munkák

Az utóbbi három féle munka, amelyet nézettünk, nem volt tartós, tehát csak az aktuális munkamenetben érhető el. Alapvetően ez azt jelenti, hogy ha elindítja a munkát, majd megnyit egy másik PowerShell konzolt, és futtatja a Get-Job programot, nem fog látni semmilyen munkát. Ugyanakkor térjen vissza a konzolhoz, amellyel megszabadította a munkát, látni fogja állapotát. Ez ellentétben áll az ütemezett munkákkal tartósak. Alapvetően egy ütemezett munka egy parancsfájlblokk, amely ütemterv szerint fut. A múltban ugyanaz a hatás érhető el a Windows Task Scheduler használatával, ami valójában az, ami a kapucnival alatt történik. Új Ütemezett feladat létrehozásához a következőket tesszük:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

Nagyon sokat folyik a parancs, ezért töröljük le.

  • Először a GetEventLogs nevét adjuk meg az Ütemezett feladatunknak.
  • Aztán elmondjuk, hogy amikor aktiválódik, azt szeretnénk, hogy futtassa a megadott parancsfájl tartalmát, amely alapvetően megkapja a biztonsági eseménynapló legfrissebb 100 bejegyzését.
  • Ezt követően egy triggeret adunk meg. Mivel az indító paraméter beviteli triggerobjektumot vesz fel, egy szintaktikai parancsot használtunk arra, hogy létrehozzunk egy triggert, amely minden nap 5PM-on kialszik.
  • Mivel az eseménynaplóval foglalkozunk, rendszergazdaként kell futtatnunk, amelyet egy új ScheduledJobOption objektum létrehozásával megadhatunk, és átmásolhatjuk a ScheduledJobOption paraméterre.
Mivel ez egy kissé más típusú munka, akkor egy másik parancsot is meg kell adnia, hogy lekérje a gép összes ütemezett munkájának listáját.
Mivel ez egy kissé más típusú munka, akkor egy másik parancsot is meg kell adnia, hogy lekérje a gép összes ütemezett munkájának listáját.

Get-ScheduledJob

Ajánlott: