15Sep

Geek skola: rakstot savu pirmo Full PowerShell skriptu

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.

Pārliecinieties, ka esat izlasījis iepriekšējos sērijas rakstus:

  • Uzziniet, kā automatizēt Windows ar PowerShell
  • Mācīšanās lietot komandrindas PowerShell
  • Mācīšanās lietot objektus PowerShell
  • Mācību formēšana, filtrēšana un salīdzināšana PowerShell
  • Uzziniet, kā izmantot RemotingPowerShell
  • Izmantojot PowerShell, lai iegūtu datora informāciju
  • Darbs ar kolekcijām PowerShell
  • Uzziniet, kā izmantot darbavietas PowerShell
  • Uzziniet, kā paplašināt PowerShell
  • mācīšanās PowerShell mainīgos, ieejas un izejas datus

Pirmā skripta rakstīšana

Pirmā lieta, kas mums jādara, iratrast 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.

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-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 iederas 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 rakstzīme 1. rindā.

Tagad uzklikšķiniet uz zaļās pogas "Palaist skriptu" vai nospiediet 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ā atsākta";

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

Ko mēs šeit darām, ir izveidot pielāgotu īpašumu, ko sauc par "Last booted", un norādot, ka tā vērtība ir jāizmanto, lai izsauktu ToDateTime statiskometode pašreizējā cauruļvada objekta LastBootUpTime īpašumā.Jūsu kods tagad izskatās kā šis.

Kodola palaišana tagad 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ā.Lai to vienkāršotu, saglabājam to šādi:

C: \ Get-LastBootTime.ps1

Tagad pārejiet uz ISE apakšējo pusi un palaidiet tālāk norādīto:

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, pēc tam dodieties atpakaļ uz ISE apakšējo pusi un skatiet palīdzību savam skriptam.

palīdzēs C: \ Get-LastBootTime.ps1

Awesome, tāpēc tagad mēs varam norādīt datora nosaukumu, kuram gribam iegūt pēdējo sāknēšanas laiku, lai izmantotu mūsu jauno parametru ComputerName. Diemžēl joprojām ir dažas nepareizas lietas. Pirmkārt, parametrs ComputerName nav obligāts, un, otrkārt, tas ir visnopietnākais noderīgais, 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 = $ taisnība)] [virkne] $ ComputerName

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

& lt; #
. SYNOPSIS
Rāda, kad jūsu dators ir palaists pēdējā laikā.
. DESCRIPTION
Šī ir WMI iesaiņotāja funkcija, lai iegūtu laiku, kad jūsu dators pēdējoreiz uzsāka darbību.
. PARAMETER ComputerName
Datora nosaukums, kuru vēlaties palaist komandu pret.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

Kad tas viss ir paveicies, jums vajadzētu beigties ar skriptu, kas izskatās šādi.

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ā.