Geek School: leer hoe u Windows kunt automatiseren met PowerShell

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 1

In deze editie van Geek School helpen we je de krachtige PowerShell-scripttaal te begrijpen die rechtstreeks in Windows is ingebouwd en die buitengewoon handig is om te kennen in een IT-omgeving.

Hoewel deze serie niet rond een examen is gestructureerd, is het leren van PowerShell een van de belangrijkste dingen die je als netwerkbeheerder kunt doen, dus als er iets is dat je wilt leren om je IT-carrière te helpen, dan is dit het wel. Bovendien is het erg leuk.

Invoering

PowerShell is de krachtigste automatiseringstool die Microsoft te bieden heeft, en het is zowel een shell als een scripttaal.

Houd er rekening mee dat deze serie is gebaseerd op PowerShell 3, dat wordt geleverd met Windows 8 en Server 2012. Als u Windows 7 gebruikt, downloadt u de PowerShell 3-update voordat u doorgaat.

Maak kennis met de console en de ISE

Er zijn twee manieren om direct uit de doos met PowerShell te communiceren: de console en de geïntegreerde scriptomgeving, ook wel de ISE genoemd. De ISE is enorm verbeterd ten opzichte van de afschuwelijke versie die bij PowerShell 2 werd geleverd en kan worden geopend door op de Win + R-toetsenbordcombinatie te drukken om een ​​run-box te openen, vervolgens powershell_ise te typen en op enter te drukken.

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 2

Zoals je kunt zien, heeft de ISE een gesplitste weergave, zodat je snel kunt scripten terwijl je het resultaat nog steeds in de onderste helft van de ISE kunt zien. De onderste helft van de ISE, waar de resultaten van uw script worden afgedrukt, kan ook worden gebruikt als een REPL-prompt, net als een opdrachtprompt. De v3 ISE heeft eindelijk ondersteuning voor intellisense toegevoegd in zowel het scriptvenster als de interactieve console.

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 3

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 4

U kunt ook communiceren met PowerShell met behulp van de PowerShell-console, wat ik voor het grootste deel van deze serie zal gebruiken. De PowerShell-console gedraagt ​​​​zich net als de opdrachtprompt: u voert eenvoudig opdrachten in en spuugt de resultaten uit. Om de Windows PowerShell-console te openen, drukt u opnieuw op de Win + R-toetsenbordcombinatie om een ​​uitvoeringsvenster te openen en typt u powershell en drukt u vervolgens op Enter.

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 5

REPL-prompts zoals deze zijn geweldig voor onmiddellijke bevrediging: u voert een opdracht in en u krijgt resultaten. Hoewel de console geen intellisense biedt, biedt hij wel iets dat tab-voltooiing wordt genoemd en dat vrijwel hetzelfde functioneert: begin gewoon een opdracht te typen en druk op tab om door mogelijke overeenkomsten te bladeren.

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 6

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 7

Het Help-systeem gebruiken

In eerdere versies van PowerShell werden helpbestanden meegeleverd toen u Windows installeerde. Dit was voor het grootste deel een goede oplossing, maar liet ons met een groot probleem achter. Toen het PowerShell-helpteam moest stoppen met werken aan de helpbestanden, waren de PowerShell-ontwikkelaars nog bezig met coderen en wijzigingen aanbrengen. Dit betekende dat toen PowerShell werd verzonden, de helpbestanden onjuist waren omdat ze niet de nieuwere wijzigingen bevatten die in de code waren aangebracht. Om dit probleem op te lossen, wordt PowerShell 3 geleverd zonder hulpbestanden uit de doos en bevat het een bij te werken helpsysteem. Dit betekent dat u, voordat u iets doet, de nieuwste helpbestanden wilt downloaden. U kunt dat doen door een PowerShell-console te openen en het volgende uit te voeren:

Update-Help

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 8

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 9

Gefeliciteerd met het uitvoeren van uw eerste PowerShell-opdracht! De waarheid is dat de opdracht Update-Help veel meer opties heeft dan alleen het uitvoeren ervan, en om ze te zien, willen we de hulp voor de opdracht bekijken. Om de hulp voor een opdracht te bekijken, geeft u eenvoudig de naam van de opdracht waarmee u hulp wilt, door aan de parameter Naam van de opdracht Get-Help, bijvoorbeeld:

Get-Help –Naam Update-Help

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 10

Je vraagt ​​je waarschijnlijk af hoe je al die tekst toch moet interpreteren, ik bedoel, waarom staat er twee veel informatie onder de syntaxissectie en waarom zijn er overal zoveel haakjes? Allereerst: de reden dat er twee informatieblokken onder de syntaxissectie staan, is omdat ze verschillende manieren vertegenwoordigen om de opdracht uit te voeren. Dit worden technisch gezien parametersets genoemd en u kunt er slechts één tegelijk gebruiken (u kunt geen parameters van verschillende sets combineren). In de bovenstaande schermafbeelding kunt u zien dat de bovenste parameterset een SourcePath-parameter heeft, terwijl de onderste dat niet heeft. De reden hiervoor is dat u de bovenste parameterset zou gebruiken (degene die SourcePath bevat) als u uw helpbestanden zou bijwerken vanaf een andere machine in uw netwerk die ze al had gedownload, terwijl u geen bronpad zou hoeven specificeren als u wilde gewoon de nieuwste bestanden van Microsoft pakken.

Om de tweede vraag te beantwoorden, is er een bepaalde syntaxis die hulpbestanden volgen en hier is het:

  • Vierkante haken rond de naam van een parameter en het type ervan betekent dat het een optionele parameter is en dat het commando prima zal werken zonder.
  • Vierkante haken rond de naam van de parameter betekenen dat de parameters een positionele parameter zijn.
  • Het ding rechts van een parameter tussen haakjes geeft aan welk gegevenstype de parameter verwacht.

Hoewel je moet leren om de syntaxis van het helpbestand te lezen, als je ooit twijfelt over een bepaalde parameter, voeg dan -Volledig toe aan het einde van je help-opdracht en scrol omlaag naar de sectie parameters, waar het je iets meer zal vertellen over elk parameter.

Get-Help –Naam Update-Help –Volledig

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 11

Het laatste dat u moet weten over het helpsysteem, is hoe u het kunt gebruiken om opdrachten te ontdekken, wat eigenlijk heel eenvoudig is. Zie je, de PowerShell accepteert bijna overal jokertekens, dus als je ze samen met de Get-Help-opdracht gebruikt, kun je gemakkelijk opdrachten ontdekken. Ik ben bijvoorbeeld op zoek naar opdrachten die te maken hebben met Windows Services:

Get-Help –Naam *service*

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 12

Natuurlijk, al deze informatie is misschien niet handig, maar geloof me, neem de tijd en leer hoe je het helpsysteem gebruikt. Het is altijd handig, zelfs voor gevorderde scripters die dit al jaren doen.

Veiligheid

Dit zou geen goede introductie zijn zonder beveiliging te noemen. De grootste zorg voor het PowerShell-team is dat PowerShell het nieuwste en beste aanvalspunt wordt voor scriptkiddies. Ze hebben een paar veiligheidsmaatregelen getroffen om ervoor te zorgen dat dit niet gebeurt, dus laten we ze eens bekijken.

De meest elementaire vorm van bescherming komt van het feit dat de PS1-bestandsextensie (de extensie die wordt gebruikt om een ​​PowerShell-script aan te duiden) niet is geregistreerd bij een PowerShell-host, maar feitelijk is geregistreerd bij Kladblok. Dat betekent dat als u dubbelklikt op een bestand, het wordt geopend met Kladblok in plaats van te worden uitgevoerd.

Ten tweede kun je geen scripts uitvoeren vanuit de shell door gewoon de naam van het script te typen, je moet het volledige pad naar het script specificeren. Dus als u een script op uw C-schijf wilt uitvoeren, moet u typen:

C: unme.ps1

Of als u zich al in de root van de C-schijf bevindt, kunt u het volgende gebruiken:

. unme.ps1

Ten slotte heeft PowerShell iets dat Execution Policies wordt genoemd, waardoor u niet zomaar een oud script kunt uitvoeren. In feite kunt u standaard geen scripts uitvoeren en moet u uw uitvoeringsbeleid wijzigen als u ze wilt mogen uitvoeren. Er zijn 4 opmerkelijke uitvoeringsbeleidslijnen:

  • Beperkt: dit is de standaardconfiguratie in PowerShell. Deze instelling betekent dat er geen script kan worden uitgevoerd, ongeacht de handtekening. Het enige dat met deze instelling in PowerShell kan worden uitgevoerd, is een individuele opdracht.
  • AllSigned: met deze instelling kunnen scripts worden uitgevoerd in PowerShell. Het script moet een bijbehorende digitale handtekening hebben van een vertrouwde uitgever. Er zal een prompt verschijnen voordat u de scripts van vertrouwde uitgevers uitvoert.
  • RemoteSigned: met deze instelling kunnen scripts worden uitgevoerd, maar moeten de script- en configuratiebestanden die van internet worden gedownload, een bijbehorende digitale handtekening hebben van een vertrouwde uitgever. Scripts die vanaf de lokale computer worden uitgevoerd, hoeven niet te worden ondertekend. Er zijn geen prompts voordat het script wordt uitgevoerd.
  • Onbeperkt: hierdoor kunnen niet-ondertekende scripts worden uitgevoerd, inclusief alle scripts en configuratiebestanden die van internet zijn gedownload. Dit omvat bestanden uit Outlook en Messenger. Het risico hier is het uitvoeren van scripts zonder enige handtekening of beveiliging. We raden u aan deze instelling nooit te gebruiken.

Om te zien waar uw huidige uitvoeringsbeleid op is ingesteld, opent u een PowerShell-console en typt u:

Get-ExecutionPolicy

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 13

Voor deze cursus en de meeste andere omstandigheden is het RemoteSigned-beleid het beste, dus ga je gang en verander je beleid met behulp van het volgende.

Opmerking: dit moet worden gedaan vanuit een verhoogde PowerShell-console.

Set-ExecutionPolicy RemoteSigned

geek-school-leren-hoe-windows-met-powershell-automatiseren foto 14

Dat was alles voor deze keer mensen, tot morgen voor wat meer PowerShell-plezier.


Disclaimer: de juiste term voor een PowerShell-opdracht is een cmdlet en vanaf nu zullen we deze correcte terminologie gebruiken. Het voelde gewoon passender om ze commando's te noemen voor deze introductie.


Als je vragen hebt, kun je me tweeten @taybgibb, of gewoon een reactie achterlaten.

Meer verhalen

Verminderen op tekst gebaseerde browsers het netwerkverkeer?

Het lijdt geen twijfel dat de webpagina's van vandaag vol zitten met rijke inhoud en meer bandbreedte gebruiken om volledig te laden, maar zou het gebruik van een op tekst gebaseerde browser in plaats van een op een GUI gebaseerde browser een aanzienlijk verschil maken bij het verminderen van netwerkverkeer? De SuperUser Q&A-post van vandaag heeft de antwoorden op die van een nieuwsgierige lezer

Geek Trivia: het snelste tweebenige wezen op aarde is het?

Denk je het antwoord te weten? Klik door om te zien of je gelijk hebt!

Geek Trivia: ducttape was oorspronkelijk uitgevonden om af te dichten?

Denk je het antwoord te weten? Klik door om te zien of je gelijk hebt!

Hoe kan ik mijn iPhone/iPad-video's bekijken via Chromecast?

Als je een iOS-apparaat en Chromecast hebt, casten de grote spelers allemaal prima (zoals Netflix), maar als het gaat om het streamen van de lokale inhoud op je apparaat naar je Chromecast, is het een beetje gedoe. Ga mee terwijl we een medelezer helpen om hun lokale iPad-inhoud op de tv te gooien.

Geek Trivia: de bestverkochte niet-gebundelde game voor het Game Boy-platform was?

Denk je het antwoord te weten? Klik door om te zien of je gelijk hebt!

Geek Trivia: de eerste console-rollenspel was?

Denk je het antwoord te weten? Klik door om te zien of je gelijk hebt!

Voorkom dat Windows om een ​​wachtwoord vraagt ​​bij het ontwaken uit de slaapstand/stand-by

Als u Windows hebt geconfigureerd om u automatisch aan te melden in plaats van een wachtwoord in te voeren, vindt u het misschien vervelend dat u nog steeds een wachtwoord moet invoeren wanneer uw pc uit de slaapstand komt. Hier is de snelle oplossing.

Waarom u waarschijnlijk niet extra wilt betalen voor een snellere CPU in uw laptop of tablet

Wanneer u een nieuwe laptop of tablet koopt, kunt u deze vaak aanpassen door extra te betalen voor een snellere CPU. Maar dit is misschien geen goed idee - de duurdere CPU is misschien minder geschikt voor het apparaat!

Geek Trivia: het eerste universele leerplichtsysteem werd gevonden?

Denk je het antwoord te weten? Klik door om te zien of je gelijk hebt!

Jumpshare is een supereenvoudige manier om bestanden online te delen

Tegenwoordig kun je bestanden delen met alle verschillende cloudopslagproviders zoals Dropbox en OneDrive, maar als je alleen een supereenvoudige manier wilt om bestanden met mensen te delen, is Jumpshare misschien de moeite van het bekijken waard.