Startpagina » hoe » Geek School Schrijven van je eerste volledige PowerShell-script

    Geek School Schrijven van je eerste volledige PowerShell-script

    Een paar weken geleden liet The Geek je zien hoe je de opdrachtprompt kunt gebruiken om te achterhalen wanneer je computer voor het laatst is opgestart. In deze laatste installatie van Geek School voor PowerShell gaan we een herbruikbare PowerShell-opdracht schrijven om hetzelfde te doen.

    Zorg ervoor dat u de vorige artikelen in de serie leest:

    • Leer hoe u Windows kunt automatiseren met PowerShell
    • Leren gebruik te maken van cmdlets in PowerShell
    • Leren hoe objecten in PowerShell te gebruiken
    • Leren opmaken, filteren en vergelijken in PowerShell
    • Leer hoe u Remoting kunt gebruiken in PowerShell
    • PowerShell gebruiken om computerinformatie te verkrijgen
    • Werken met collecties in PowerShell
    • Meer informatie over het gebruik van taken in PowerShell
    • Leer hoe u PowerShell uitbreidt
    • PowerShell-variabelen leren leren, Input en Output

    Je eerste script schrijven

    Het eerste dat we moeten doen is een manier vinden om toegang te krijgen tot de informatie waarnaar we op zoek zijn. Aangezien we te maken hebben met managementinformatie, moeten we waarschijnlijk een kijkje nemen bij het gebruik van WMI, dat inderdaad een klasse heeft met de naam Win32_OperatingSystem waarmee je uitgebreide informatie over je besturingssysteem kunt bekijken, inclusief de laatste keer dat het is opgestart..

    Dus nu we weten waar we de informatie kunnen vinden waarnaar we op zoek zijn, open dan de ISE en typ het volgende.

    Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

    Selecteer-object -eigenschap CSName, LastBootUpTime

    Opmerking: ik moest mijn code over twee regels splitsen zodat het allemaal in de schermafbeelding past, maar voel je vrij om het op een enkele regel te typen. Als je ervoor kiest om het over twee lijnen te splitsen, zorg er dan voor dat het pipe-personage het laatste teken is op regel 1.

    Klik nu op de groene knop "Script uitvoeren" of druk op de F5-toets op uw toetsenbord om de code te testen.

    WMI-tijden kunnen een beetje cryptisch zijn. Daarmee bedoelen we als je naar de LastBootUpTime-property kijkt, staat er 2013-03-19 om 18:26:21, maar om een ​​of andere reden besloten de WMI-jongens om dat alles samen te voegen tot een enkele reeks. Gelukkig hoeven we ons geen zorgen te maken over het handmatig ontleden van de reeks, omdat er een eenvoudigere manier is om dit te doen, zij het geavanceerder. U moet het Select-Object-gedeelte van de code zo wijzigen dat het er zo uitziet:

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

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

    Wat we hier doen is het maken van een aangepaste eigenschap met de naam "Last Booted" en specificeren dat de waarde ervan het resultaat moet zijn van het aanroepen van de statische ToDateTime-methode op de LastBootUpTime-eigenschap van het huidige pipeline-object. Uw code zou er nu zo uit moeten zien.

    Als u de code nu uitvoert, krijgt u een veel beter leesbare laatste opstarttijd.

    Nu we tevreden zijn met de basisfunctionaliteit van ons script, moeten we het opslaan. Laten we het voor de eenvoud als volgt opslaan:

    C: \ Get-LastBootTime.ps1

    Schakel nu naar de onderste helft van de ISE en voer het volgende uit:

    C: \ Get-LastBootTime.ps1

    Super goed! Ons script werkt zoals verwacht, maar er is nog steeds een probleem met ons script. We hebben de naam van de computer hard gecodeerd waarvoor we de laatste opstarttijd willen hebben. In plaats van hardcodingwaarden, moeten we liever een parameter opgeven zodat iedereen die het script gebruikt, kan kiezen op welke computer het script wordt uitgevoerd. Om dat te doen, gaat u naar de bovenkant van uw script en doet u het volgende.

    param (
    [Tekenreeks] $ ComputerName
    )

    Vervang dan de hardcoded localhost-waarde door $ Computernaam-variabele. Uw script zou er nu als volgt uit moeten zien:

    Sla je script op en ga terug naar de onderste helft van de ISE en bekijk de hulp voor je script.

    help C: \ Get-LastBootTime.ps1

    Geweldig, dus nu kunnen we de naam opgeven van de computer die we willen gebruiken voor de laatste opstarttijd voor het gebruik van onze nieuwe Computernaam-parameter. Helaas zijn er nog steeds een paar dingen mis. Ten eerste is de Computernaam-parameter optioneel en ten tweede is dat de lelijkste die ik ooit heb gezien, dus laten we die problemen snel oplossen. Om de parameter Computernaam verplicht te maken, wijzigt u de inhoud van het param-blok naar het volgende.

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

    Wat betreft het maken van een beter helpbestand, de meest gebruikte methode is om op reacties gebaseerde hulp te gebruiken. Dat betekent dat we gewoon een extra lange opmerking toevoegen aan het top of out-script.

    <#
    .KORTE INHOUD
    Geeft aan wanneer uw pc voor het laatst is opgestart.
    .OMSCHRIJVING
    Dit is een WMI-wrapperfunctie om de tijd te krijgen dat uw pc voor het laatst is opgestart.
    .PARAMETER Computernaam
    De naam van de computer waarop u de opdracht wilt uitvoeren.
    .VOORBEELD
    Get-LastBootTime -ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

    Als dat allemaal is gebeurd, zou je moeten eindigen met een script dat er zo uitziet.

    Laten we nu eens kijken naar ons nieuwe helpbestand.

    Ahhh, ziet er goed uit! Nu ons script compleet is, hebben we nog een laatste ding te doen: testen. Hiervoor ga ik de ISE verlaten en ga ik terug naar de PowerShell-console zodat we zeker kunnen stellen dat er geen anomalieën zijn.

    Als je begint met een eenvoudige voering en er gewoon aan blijft bouwen zoals we in deze handleiding hebben gedaan, zul je het snel onder de knie krijgen. Dat is alles voor deze tijd, mensen, zie je in de volgende installatie van Geek School.