Geek skola, rakstot savu pirmo pilno PowerShell skriptu
Pirms dažām nedēļām The Geek parādīja, kā jūs varat izmantot komandu uzvedni, lai atrastu, kad jūsu dators tika izveidots pēdējo reizi. Šajā pēdējā Geek skolas PowerShell instalācijā mēs rakstīsim atkārtoti izmantojamu PowerShell komandu, lai to izdarītu.
Noteikti izlasiet iepriekšējos sērijas rakstus:
- Uzziniet, kā automatizēt Windows ar PowerShell
- Mācīšanās lietot Cmdlet PowerShell
- Mācīšanās lietot objektus PowerShell
- Mācību formatēšana, filtrēšana un salīdzināšana programmā PowerShell
- Uzziniet, kā lietot Remoting PowerShell
- Izmantojot PowerShell, lai iegūtu informāciju par datoru
- Darbs ar kolekcijām PowerShell
- Uzziniet, kā lietot darbus PowerShell
- Uzziniet, kā paplašināt PowerShell
- PowerShell mainīgo, ieejas un izejas mācīšanās
Pirmā skripta rakstīšana
Pirmā lieta, kas mums jādara, ir atrast veidu, kā piekļūt meklētajai informācijai. Tā kā mēs nodarbojamies ar vadības informāciju, mums, iespējams, ir jāizpēta WMI izmantošana, kurai patiešām ir klase Win32_OperatingSystem, kas ļauj skatīt verbozu informāciju par jūsu operētājsistēmu, tostarp pēdējo reizi, kad tā tika uzsākta.
Tāpēc tagad, kad mēs zinām, kur mēs varam atrast meklēto informāciju, atveriet ISE un ierakstiet tālāk norādīto.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Atlasiet-Objekts-Īpašums CSName, LastBootUpTime
Piezīme: man bija jāsadala kods divās rindās, lai tas viss ietilptu ekrānuzņēmumā, bet brīvi rakstiet to vienā rindā. Ja izvēlaties sadalīt to divās rindās, lūdzu, pārliecinieties, ka cauruļu rakstzīme ir pēdējā rindiņa 1. rindā.
Tagad uzklikšķiniet uz zaļās pogas “Run Script” vai nospiediet tastatūras taustiņu F5, lai pārbaudītu kodu.
WMI laiki var būt nedaudz slepeni. Ar to mēs domājam, ja paskatīsieties uz LastBootUpTime īpašumu, tas saka 2013-03-19 plkst. 18:26:21, bet kāda iemesla dēļ WMI puiši nolēma visu sajaukt vienā virknē. Par laimi mums, mums nav jāuztraucas par manuālu virknes parsēšanu, jo ir vienkāršāks veids, kā to izdarīt, lai gan vēl vairāk. Jums būs jāmaina koda atlases-objekta daļa, lai izskatītos šādi:
Select-Object -Property CSName, @ n = ”Pēdējā sāknēšana;
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Tas, ko mēs šeit darām, ir izveidot pielāgotu īpašumu, ko sauc par “Last Booted”, un norādot, ka tā vērtībai jābūt pašreizējās cauruļvada objekta LastBootUpTime rekvizīta uzaicinājumam uz ToDateTime statisko metodi. Tagad jūsu kodam vajadzētu izskatīties šādi.
Tagad koda palaišana dos daudz lasāmāku pēdējo sāknēšanas laiku.
Tagad, kad esam apmierināti ar mūsu skripta pamatfunkcijām, mums tas ir jāsaglabā. Vienkāršības labad to saglabāsim šādi:
C: Get-LastBootTime.ps1
Tagad pārslēdzieties uz ISE apakšējo pusi un palaidiet:
C: Get-LastBootTime.ps1
Lieliski! Mūsu skripts darbojas kā paredzēts, tomēr joprojām ir viena problēma ar mūsu skriptu. Mēs kodējam tā datora nosaukumu, kuram mēs vēlamies iegūt pēdējo sāknēšanas laiku. Cietās kodēšanas vērtību vietā mums vajadzētu sniegt parametru, lai ikviens, kas lieto skriptu, var izvēlēties, kuru datoru viņi izmanto skriptu. Lai to izdarītu, dodieties uz jūsu skripta augšdaļu un rīkojieties šādi.
param (
[string] $ ComputerName
)
Pēc tam nomainiet hardcoded localhost vērtību ar $ ComputerName mainīgo. Jūsu skriptam tagad vajadzētu izskatīties šādi:
Saglabājiet skriptu, pēc tam dodies atpakaļ uz ISE apakšējo pusi un skatiet skripta palīdzību.
palīdzība C: Get-LastBootTime.ps1
Awesome, tāpēc tagad mēs varam norādīt datora nosaukumu, kuru mēs vēlamies iegūt, lai izmantotu mūsu jauno ComputerName parametru pēdējo sākšanas laiku. Diemžēl joprojām ir dažas kļūdas. Pirmkārt, ComputerName parametrs ir neobligāts, un, otrkārt, tas ir vissliktākais, ko esmu redzējis, tāpēc ātri atrisināsim šos jautājumus. Lai ComputerName parametrs būtu obligāts, nomainiet parametra parametra saturu uz tālāk norādīto.
[Parametrs (obligāts = $ true)] [string] $ ComputerName
Kas attiecas uz labākas palīdzības faila izveidi, visizplatītākā metode ir izmantot komentārus balstītu palīdzību. Tas nozīmē, ka mēs tikai pievienojam papildu garu komentāru skripta augšdaļā.
<#
.SINOPSIS
Parāda, kad pēdējais jūsu dators ir startējis.
.APRAKSTS
Šī ir WMI iesaiņošanas funkcija, lai iegūtu laiku, ko dators pēdējo reizi uzsāka.
.PARAMETER ComputerName
Tā datora nosaukums, kuram vēlaties palaist komandu.
.PIEMĒRS
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>
Kad tas viss ir paveikts, jums vajadzētu beigties ar skriptu, kas izskatās šādi.
Tagad ejam un apskatiet mūsu jauno palīdzības failu.
Ahhh, meklējat lielisku! Tagad, kad mūsu skripts ir pabeigts, mums ir viena pēdējā lieta: testēšana. Šim nolūkam es izeju no ISE un dodies atpakaļ PowerShell konsolē, lai mēs varētu pārliecināties, ka nav anomāliju.
Ja jūs sākat ar vienkāršu vienu līnijpārvadātāju un vienkārši turpināt to veidot, kā mēs to darījām šajā rokasgrāmatā, jūs nekad nesaņemsiet to. Tas ir viss šajā laikā ļaudīm, jūs redzēsiet nākamajā Geek skolas instalācijā.