29Aug

Geek-koulu: oppii käyttämään työpaikkoja PowerShellissä

click fraud protection

PowerShellillä on neljätyyppistä työtä - Taustatiedot, Etäkäyttö, WMI-työ ja aikataulutettu työ.Liity mukaan, kun saamme selville, mitä he ovat ja miten voimme käyttää niitä.

Lue lisää artikkeleista:

  • Opi käyttämään Windowsia PowerShellin avulla
  • Oppimista käyttämään Cmdlet-työkaluja PowerShellissä
  • Oppiminen PowerShell-objektien käyttämisessä
  • Oppimismuotoilu, suodatus ja vertailu PowerShellissä
  • Opi käyttämään etäopastustaPowerShell
  • PowerShellin käyttäminen tietokoneen tietojen hankkimiseen
  • PowerShell-kokoelmien käsittely

Ja pysy kuulolla koko sarjan koko viikon ajan.

Taustatiedot

Tähän mennessä kaikki, mitä olen osoittanut PowerShellissä, on synkronoitu, eli kirjoitamme jotain kuoriin ja emme voi todella tehdä paljon ennen kuin komento on valmis. Tällöin taustatyöt tulevat sisään. Taustan aloittamiseksi työ yksinkertaisesti ohittaa komentojonon Start-Job-cmdlet-komentoon.

Käynnistys-työt -Name GetFileList -Scriptblock{ Get-ChildItem C: \ -Recurse}

instagram viewer

Nyt voimme tehdä mitä haluamme shellissa samalla, kun komentohakemisto suoritetaan taustalla.

Kun käynnistät uuden työn, PowerShell luo uuden työn objektin, joka edustaa tätä tehtävää.Voit saada luettelon kaikista työpaikoista milloin tahansa suorittamalla Get-Job-cmdlet.

Työn esineet kertovat sinulle työpaikkojen tilasta. Esimerkiksi edellä kuvatussa kuvakaappauksessa voimme nähdä, että meillä on vielä GetFileList-niminen BackgroundJob-toiminto, joka on jo alkanut palauttaa tietoja. Jos jossakin vaiheessa päätätte, että työ on ollut liian kauan käynnissä, voit helposti pysäyttää sen viemällä sen Stop-Jobiin.

Get-Job -nimi GetFileList |Pysäytys-työ

Kun olet lopettanut työn, sen tiedot vastaanotetaan, kunnes se pysähtyy. Siitä on kuitenkin hana. PowerShellissä, kun saat työn tulokset, ne poistetaan. Jotta ne pysyisivät, sinun on määritettävä vastaanottotyökalun Keep Switch -parametri.

Get-Job -nimi GetFileList |Vastaanotto-työ -Keep

Kun olet valmis työhön, kannattaa poistaa se. Työn poistaminen yksinkertaisesti putkeksi Poista-työ-cmdlettiin.

Get-Job -nimi GetFileList |Remove-Job

Tämä poistaa sen Job-Jobin palauttamien töiden luettelosta.

Etäkäyttö

Muutamia tunteja sitten katsottiin, kuinka voimme käyttää kaukosäädintä PowerShell-komentoiden suorittamiseen etäkoneella Invoke-Command-ohjelmaa käyttäen, mutta tiesitkö, että voit myös käyttää Invoke-Command-ohjelmaa käynnistämään etätoimintatiedon taustalla? Voit tehdä niin lisäämällä yksinkertaisesti -AsJob-parametrin komennon loppuun:

Invoke-Command -KomputerName Flash, Viper -Välittäjäpääkäyttäjä -ScriptBlock{ gci} -AsJob

Tämä oli yksinkertainen komento ja sen pitäisi olla valmis jo nytantaa katsomaan työpaikkamme tilaa.

Hmm, näyttää siltä että se epäonnistui. Tämä tuo minut ensimmäiseen sahaan töihin. Kun luot minkä tahansa tyyppisen uuden työn PowerShellissä, se luo yhden vanhemman työn yhdelle lapsityöhön jokaiselle tietokoneelle, jota vastaan ​​suoritat työtä.Kun käytät Get-Job-cmdletä, se näyttää vain vanhemmat työt ja valtion omaisuus on huonoin tapaus, mikä tarkoittaa sitä, että vaikka komento ei onnistunut vain yhdellä sadasta tietokoneesta, vanhemman työpaikan tila sanooepäonnistui. Jos haluat nähdä luettelon lapsityövoimista, sinun on käytettävä IncludeChildJob -parametria.

Jos katsot lähemmäksi, huomaat, että työ ei todellakaan ole onnistunut yhdellä tietokoneella, mikä vie meidät seuraavaan skaalaan. Kun yrität saada työn tulokset, jos määrität vanhemman työnimen tai tunnuksen, PowerShell palauttaa tiedot kaikista lapsityöpaikoista. Ongelmana on se, että jos jollakin lapsityöstä syntyy virhe, jätämme jonkin verran punaista tekstiä.

Tämä on kaksi tapaa. Ensinnäkin, jos tiedät, mistä tietokoneista haluat tuloksia, voit käyttää vain Recieve -Job-cmdletin ComputerName -parametria.

Get-Job -Id 3 |Vastaanotto-Työ -Keep -TietokoneNimi Viper

Voit myös saada tulokset tietyltä lapsityöstä käyttämällä sen työlähdettä.

Get-Job -Id 3 -IncludeChildJob

Get-Job -Id 5 |Vastaanota-työ -Keep

WMI työpaikat

WMI-työt ovat paljon samoja kuin etätoimistot, jotka tarvitsevat vain -AsJob-parametrin lisäämisen Get-WmiObject-cmdlettiin.

Valitettavasti tämä tarkoittaa sitä, että heihin sovelletaan myös samoja etuja, jotka mainitsin Etätyöpaikat -osassa.

Ajoitetut työt

Viimeiset kolmentyyppiset tarkastellut työpaikat eivät olleet pysyviä, joten ne ovat käytettävissä vain nykyisessä istunnossasi. Periaatteessa tämä tarkoittaa sitä, että jos aloitat työn ja avaat toisen PowerShell Consolen ja suoritat Get-Jobin, et näe mitään työpaikkoja. Palaa kuitenkin takaisin konsoliin, josta potkittiin työtä, ja näet sen tilan. Tämä on vastoin aikataulutettuja töitä, jotka ovat pysyviä .Periaatteessa aikataulu on skripti, joka toimii aikataulussa. Aiemmin sama vaikutus olisi voitu saavuttaa käyttämällä Windows Task Scheduler -ohjelmaa, joka on oikeastaan ​​mitä tapahtuu hupparin alla. Uuden aikataulutoimen luominen tapahtuu seuraavasti:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock{ Get-EventLog -LogName-turvallisuus-uusi 100} -Trigger( New-JobTrigger-Päivittäinen-klo 17) -ScheduledJobOption( New-ScheduledJobOption-RunElevated)

Komento on melko paljon, joten hajottakaamme.

  • Ensin annamme ajastetun työn nimeksi GetEventLogs.
  • Sitten kerrotaan, että kun käynnistetään, haluamme sen suorittavan määritetyn komentosarjan sisällön, joka saa pohjimmiltaan uusimmat 100 tietoturva-tapahtumaloki.
  • Seuraavaksi määritetään liipaisin. Koska laukaisuparametri ottaa liipaisuobjektin tulona, ​​käytimme sulkeutuva komento laukaista, joka poistuu joka päivä klo 5.
  • Koska olemme tekemisissä tapahtumalokin kanssa, meidän pitää toimia ylläpitäjänä, jonka voimme määrittää luomalla uusi ScheduledJobOption-objekti ja siirtämällä se ScheduledJobOption-parametriin.

Koska tämä on hieman erilaista työtä, sinun täytyy myös käyttää eri komentoa hakeakseen luettelon kaikista koneen ajoitetuista töistä.

Get-ScheduledJob

Tämä kaikki on siihen.