If-Koubou

Geek skola: rakstot savu pirmo Full PowerShell skriptu

Geek skola: rakstot savu pirmo Full PowerShell skriptu (Kā)

Pirms dažām nedēļām Geek parādīja, kā jūs varat izmantot komandu uzvedni, lai atrastu, kad pēdējais ir palaists datorā. Šajā pēdējā PowerShell Geek skolu instalācijā mēs izveidosim atkārtotas lietošanas PowerShell komandu, lai veiktu to pašu.

Noteikti izlasiet iepriekšējos sērijas rakstus:

  • Uzziniet, kā automatizēt Windows ar PowerShell
  • Mācīšanās lietot moduļus PowerShell
  • Mācīšanās kā lietot objektus PowerShell
  • Mācību formēšana, filtrēšana un salīdzināšana PowerShell
  • Uzziniet, kā izmantot utilizācijas PowerShell
  • Izmantojot PowerShell, lai iegūtu informāciju par datoru
  • Darbs ar kolekcijām PowerShell
  • Uzziniet, kā izmantot darbavietas PowerShell
  • Uzziniet, kā paplašināt PowerShell
  • Mācību PowerShell mainīgie, ieejas un izejas dati

Uzrakstiet savu pirmo skriptu

Pirmā lieta, kas mums jādara, ir atrast veidu, kā piekļūt informācijai, kuru mēs meklējam. Tā kā mēs strādājam ar pārvaldības informāciju, mums, iespējams, ir jāaplūko WMI izmantošana, kurai patiešām ir tāda klase kā Win32_OperatingSystem, kas ļauj aplūkot verbose informāciju par jūsu operētājsistēmu, tostarp pēdējo reizi, kad tā tika palaista.

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-klase Win32_OperatingSystem -ComputerName localhost |

Select-Object-Properties CSName, LastBootUpTime

Piezīme. Man vajadzēja sadalīt manu kodu divās rindās tā, lai tas viss iekļautu ekrānuzņēmumā, bet justies brīvi to ierakstīt vienā rindā. Ja jūs izvēlaties to sadalīt divās rindās, lūdzu, pārliecinieties, vai caurules simbols ir pēdējais raksturs 1. rindiņā.

Tagad noklikšķiniet uz zaļās pogas "Palaist skriptu" vai nospiediet tastatūras taustiņu F5, lai pārbaudītu kodu.

WMI laiki var būt nedaudz norīkoti. Ar to mēs domājam, ja paskatās uz LastBootUpTime īpašumu, tas saka 2013-03-19 pie 18:26:21, bet kādu iemeslu dēļ WMI puiši nolēma apvienot visu to vienā virtenē. Par laimi, mums nav jāuztraucas par manuālo virknes parsēšanu, jo ir vieglāk to izdarīt, lai gan tas ir daudz modernāks. Jums vajadzēs mainīt koda daļu Select-Object, lai tas izskatās šādi:

Select-Object-Properties CSName, @ n = "Pēdējās atsākšanas";

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

Šeit mēs esam izveidojuši pielāgotu īpašumu, ko sauc par "pēdējo palaišanu", un norādot, ka tā vērtība ir jāizmanto, lai izsauktu ToDateTime statisko metodi pašreizējā cauruļvada objekta LastBootUpTime īpašumā. Jūsu kods tagad izskatās kā šis.

Tagad koda aizvadīšana dos daudz lasāmāku pēdējo sāknēšanas laiku.

Tagad, kad esam apmierināti ar mūsu skripta pamata funkcionalitāti, mums tas ir jāsaglabā. Vienkāršības labad saglabājam to šādi:

C: \ Get-LastBootTime.ps1

Tagad pārejiet uz ISE apakšējo pusi un palaidiet tālāk norādītās darbības.

C: \ Get-LastBootTime.ps1

Lieliski! Mūsu skripts darbojas kā paredzēts, taču mūsu skriptā joprojām pastāv viena problēma. Mēs cietā koda nosaukumu datoru, kuru mēs vēlamies, lai iegūtu pēdējo sāknēšanas laiku. Tā vietā, lai apzīmētu "hardcoding" vērtības, mums drīzāk būtu jānorāda parametrs, lai ikviens, kurš izmanto skriptu, varētu izvēlēties, uz kuru datoru viņi skenē. Lai to paveiktu, dodieties uz skripta augšdaļu un veiciet tālāk norādītās darbības.

param (
[virkne] $ ComputerName
)

Tad nomainiet hardcoded localhost vērtību ar $ ComputerName mainīgo. Jūsu skripts tagad izskatās šādi:

Saglabājiet savu skriptu, tad dodieties atpakaļ uz ISE apakšējo pusi un skatiet palīdzību savam skriptam.

palīdzība C: \ Get-LastBootTime.ps1

Awesome, tāpēc tagad mēs varam norādīt datora nosaukumu, kuram vēlamies iegūt pēdējo sāknēšanas laiku mūsu jaunā parametra ComputerName lietošanai. Diemžēl joprojām ir dažas nepareizas lietas. Pirmkārt, parametrs ComputerName ir neobligāts, un, otrkārt, tas ir visnoderīgākais, ko es jebkad esmu redzējis, tāpēc ātri atrisināsim šīs problēmas. Lai padarītu "ComputerName" parametru obligātu, nomainiet param bloks saturu tālāk norādītajam.

[Parametrs (obligāti = $ true)] [virkne] $ ComputerName

Kas attiecas uz labāku palīdzības faila izveidi, visbiežāk sastopamā metode ir izmantot uz komentāriem balstītu palīdzību. Tas nozīmē, ka mēs vienkārši pievienojam papildu garu komentāru skripta augšgalā.

<#
.SYNOPSIS
Parāda, kad beidzās jūsu datora palaišana.
. APSTIPRINĀJUMS
Šī ir WMI iesaiņojuma funkcija, lai iegūtu laiku, kad jūsu dators pēdējoreiz startēja.
.PARAMETER ComputerName
Datora nosaukums, kuru vēlaties palaist komandu pret.
.PIEMĒRS
Get-LastBootTime -ComputerName localhost
.LINK
www.howtogeek.com
#>

Kad viss ir izdarīts, jums vajadzētu beigties ar skriptu, kas izskatās kā šis.

Tagad ejiet un pārbaudiet mūsu jauno palīdzības failu.

Ahhh, izskatās lieliski! Tagad, kad mūsu skripts ir pabeigts, mums ir viena pēdējā lieta, kas jādara: testēšana. Lai to izdarītu, es eju iziet no ISE un atgriezšos PowerShell konsolei tikai tā, lai mēs varētu pārliecināties, ka nav nekādu anomāliju.

Ja jūs sākat ar vienkāršu līnijpārvadātāju un vienkārši saglabājat ēkas uz tā, kā mēs to darījām šajā ceļvedī, jūs nekavējoties iegūsit to. Tas viss ir šī laika cilvēkiem, redzēt jūs nākamajā Geek skolu instalācijā.