Geek School: Ensimmäisen Full PowerShell Scriptin kirjoittaminen

Sisällysluettelo:

Geek School: Ensimmäisen Full PowerShell Scriptin kirjoittaminen
Geek School: Ensimmäisen Full PowerShell Scriptin kirjoittaminen

Video: Geek School: Ensimmäisen Full PowerShell Scriptin kirjoittaminen

Video: Geek School: Ensimmäisen Full PowerShell Scriptin kirjoittaminen
Video: Physical Therapy Strategies for People with Dysautonomia - YouTube 2024, Huhtikuu
Anonim
Muutama viikko sitten Geek osoitti, kuinka voit käyttää komentokehotea löytääksesi, kun tietokone käynnistettiin viimeiseksi. Tässä viimeisessä asennuksessa Geek School for PowerShell, aiomme kirjoittaa uudelleenkäytettävän PowerShell komennon tehdä sama asia.
Muutama viikko sitten Geek osoitti, kuinka voit käyttää komentokehotea löytääksesi, kun tietokone käynnistettiin viimeiseksi. Tässä viimeisessä asennuksessa Geek School for PowerShell, aiomme kirjoittaa uudelleenkäytettävän PowerShell komennon tehdä sama asia.

Muista lukea sarjan aiemmat artikkelit:

  • Opi käyttämään automaattista Windowsia PowerShellillä
  • Learning käyttämään Cmdlets PowerShellissä
  • Oppiminen esineiden käyttämisessä PowerShellissä
  • Oppimisen muotoilu, suodatus ja vertailu PowerShellissä
  • Opi käyttämään etäisyyttä PowerShellissä
  • PowerShellin käyttäminen tietokoneen tietojen saantiin
  • PowerShellin kokoelmien käsittely
  • Opi käyttämään PowerShellissä tehtäviä töitä
  • Opi käyttämään PowerShellia
  • Learning PowerShell -muuttujat, syöttö ja tulostus

Ensimmäisen komentosarjan kirjoittaminen

Ensinnäkin meidän on löydettävä tapa saada haluamamme tiedot. Koska olemme tekemisissä hallinnointiin liittyvien tietojen kanssa, meidän on todennäköisesti tarkasteltava WMI: n käyttämistä, jolla on todellakin Win32_OperatingSystem-niminen luokka, jonka avulla voit tarkastella käyttöjärjestelmääsi koskevia tietoja, mukaan lukien viimeinen käynnistysvaihe.

Joten nyt, kun tiedämme, mistä löydämme etsimämme tiedot, avaa ISE ja kirjoita seuraava.
Joten nyt, kun tiedämme, mistä löydämme etsimämme tiedot, avaa ISE ja kirjoita seuraava.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

Huomaa: Minun jouduin jakamaan koodi kahdella rivillä niin, että kaikki sopivat kuvakaappaukseen, mutta voit vapaasti kirjoittaa sen yhdellä rivillä. Jos haluat jakaa sen kahteen riviin, varmista, että putkimerkki on viimeinen merkki linjalla 1.

Napsauta sitten vihreää "Run Script" -painiketta tai paina F5-näppäintä testata koodia.
Napsauta sitten vihreää "Run Script" -painiketta tai paina F5-näppäintä testata koodia.
WMI-ajat voivat olla hieman salaa. Tarkoitamme, että katsotko LastBootUpTime-ominaisuutta, se kertoo 2013-03-19 klo 18:26:21, mutta jostain syystä WMI-kaverit päättivät yhdistää kaiken yhteen merkkijonoksi. Onneksi meille emme tarvitse huolehtia manuaalisesta jäsentämisestä, koska se on helpompi tapa tehdä se, vaikkakin edistyksellisempi. Sinun on muutettava koodin Select-Object-osa, joka näyttää tältä:
WMI-ajat voivat olla hieman salaa. Tarkoitamme, että katsotko LastBootUpTime-ominaisuutta, se kertoo 2013-03-19 klo 18:26:21, mutta jostain syystä WMI-kaverit päättivät yhdistää kaiken yhteen merkkijonoksi. Onneksi meille emme tarvitse huolehtia manuaalisesta jäsentämisestä, koska se on helpompi tapa tehdä se, vaikkakin edistyksellisempi. Sinun on muutettava koodin Select-Object-osa, joka näyttää tältä:

Select-Object -Property CSName,@{n=”Last Booted”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

Mitä täällä teemme, luodaan mukautettu omaisuus nimeltä "Last Booted" ja määritetään, että sen arvon täytyy olla seurausta kutsumasta ToDateTime staattista menetelmää nykyisen putkiobjektin LastBootUpTime-ominaisuudelle. Sinun koodisi pitäisi nyt näyttää tältä.

Nyt koodin suorittaminen tuottaa paljon helpommin lukea viimeisen käynnistyksen ajan.
Nyt koodin suorittaminen tuottaa paljon helpommin lukea viimeisen käynnistyksen ajan.
Nyt, kun olemme tyytyväisiä skripteemme perustoimintoihin, meidän on tallennettava se. Yksinkertaisuuden vuoksi tallennetaan se seuraavasti:
Nyt, kun olemme tyytyväisiä skripteemme perustoimintoihin, meidän on tallennettava se. Yksinkertaisuuden vuoksi tallennetaan se seuraavasti:

C:Get-LastBootTime.ps1

Siirry nyt ISE: n alareunaan ja suorita seuraavat:
Siirry nyt ISE: n alareunaan ja suorita seuraavat:

C:Get-LastBootTime.ps1

Loistava! Käsikirjamme toimii odotetulla tavalla, mutta komentosarjassamme on silti yksi ongelma. Me kova koodi on tietokoneen nimi, jonka haluamme saada viimeisen käynnistysajan. Hardcoding-arvojen sijaan pitäisi antaa pikemminkin parametri, jotta komentosarjan käyttäjä voi valita minkä tietokoneen he käsittelevät komentosarjaa. Voit tehdä tämän siirtymällä komentosarjan yläosaan ja tekemällä seuraavat.
Loistava! Käsikirjamme toimii odotetulla tavalla, mutta komentosarjassamme on silti yksi ongelma. Me kova koodi on tietokoneen nimi, jonka haluamme saada viimeisen käynnistysajan. Hardcoding-arvojen sijaan pitäisi antaa pikemminkin parametri, jotta komentosarjan käyttäjä voi valita minkä tietokoneen he käsittelevät komentosarjaa. Voit tehdä tämän siirtymällä komentosarjan yläosaan ja tekemällä seuraavat.

param( [string]$ComputerName )

Sitten korvataan karkotettu localhost-arvo $ ComputerName -muuttuvalla. Käsikirjoituksesi pitäisi nyt näyttää tältä:

Tallenna käsikirjoitus ja palaa sitten ISE: n alareunaan ja tutustu käsikirjoitustasi.
Tallenna käsikirjoitus ja palaa sitten ISE: n alareunaan ja tutustu käsikirjoitustasi.

help C:Get-LastBootTime.ps1

Mahtavaa, joten nyt voimme määrittää tietokoneen nimen, jonka haluamme saada viimeisen käynnistyksen ajan uuden ComputerName-parametrin käyttämiseen. Valitettavasti on vielä muutamia asioita väärin. Ensinnäkin ComputerName-parametri on vapaaehtoinen ja toiseksi se on kaikkein rohkein apu, jota olen koskaan nähnyt, joten korjataan nämä asiat nopeasti. Jos haluat tehdä ComputerName -parametrin pakolliseksi, muuta param-lohkon sisältö seuraavaan.
Mahtavaa, joten nyt voimme määrittää tietokoneen nimen, jonka haluamme saada viimeisen käynnistyksen ajan uuden ComputerName-parametrin käyttämiseen. Valitettavasti on vielä muutamia asioita väärin. Ensinnäkin ComputerName-parametri on vapaaehtoinen ja toiseksi se on kaikkein rohkein apu, jota olen koskaan nähnyt, joten korjataan nämä asiat nopeasti. Jos haluat tehdä ComputerName -parametrin pakolliseksi, muuta param-lohkon sisältö seuraavaan.

[Parameter(Mandatory=$true)][string]$ComputerName

Mitä tulee parempaan ohjetiedostoon, tavallisin tapa on käyttää kommenttipohjaista apua. Tämä tarkoittaa, että lisäämme ylimääräisen pitkän kommentin komentorivin yläosaan.

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Kun kaikki tämä on tehty, sinun pitäisi päätyä käsikirjoitukseen.

Suositeltava: