Geek skola: rakstot savu pirmo Full PowerShell skriptu

Satura rādītājs:

Geek skola: rakstot savu pirmo Full PowerShell skriptu
Geek skola: rakstot savu pirmo Full PowerShell skriptu

Video: Geek skola: rakstot savu pirmo Full PowerShell skriptu

Video: Geek skola: rakstot savu pirmo Full PowerShell skriptu
Video: PowerShell Basics Get-Process Tutorial - YouTube 2024, Aprīlis
Anonim
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.
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.
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 |

Select-Object -Property 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.
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:
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 -Property CSName,@{n=”Last Booted”;

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 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:
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.
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.
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( [string]$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.
Saglabājiet savu skriptu, tad dodieties atpakaļ uz ISE apakšējo pusi un skatiet palīdzību savam skriptam.

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

[Parameter(Mandatory=$true)][string]$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 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 #>

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

Ieteicams: