You are on page 1of 52

PowerShell

Door Davy Maes

Objectieven
Na deze cursus zal u in staat zijn om:
Te begrijpen wat PowerShell juist is Te begrijpen wat de basisbouwstenen zijn in PowerShell PowerShell te gebruiken om administratieve taken in Windows uit te voeren

Inhoudstabel
Algemeen PowerShell Console
PowerShell installeren & opstarten Eerste stappen in de console De console aanpassen PowerShell als rekenmachine Externe commandos uitvoeren Cmdlets

Inhoudstabel
PowerShell console
Help functie Parameters Aliassen (oude gewoontes) vs. Cmdlets PowerShell scripts Variabelen Piping

Inhoudstabel
Informatie over Computers Werken met registersleutels Extra oefeningen

Algemeen
Omgeving om administratieve taken in Windows mee te verrichten Onderdeel van applicaties
Microsoft Exchange Server 2007 Microsoft SQL Server 2008

Geschiedenis Toekomst

Algemeen
Optionele download voor Windows XP, Server 2003 and Windows Vista
Onderdeel van Windows Management Framework

Standaard vanaf Windows Server 2008 Tekst gebaseerd


Command-line interpreteerder Hoofdletter ongevoelig

GUI applicaties voor PowerShell

PowerShell Console
PowerShell installeren & opstarten Eerste stappen in de console
Command console keyboard input Hello Files & folders Running Processes Console window leegmaken Console window verlaten

PowerShell Console
Eerste stappen in de console
Onvolledige invoer Annuleren invoer Sneltoetsen Verwijderen onjuiste invoer Historiek Auto aanvullen (tab toets) Selecteren (modus snel bewerken)

PowerShell Console
De console aanpassen
Opties Lettertype Indeling Kleuren

PowerShell Console
PowerShell als rekenmachine
Voorbeelden:
2 + 4 (Enter) (12+5) * 3 / 4.5 (Enter)

Gebruik . voor kommagetallen Ondersteunt kilobyte, megabyte,


4GB / 720MB (Enter) Geen spaties tussen het getal en de eenheid

PowerShell Console
Operator Description Example Result

Adds two values

2+4
Hi + there 1,2,3 + 4,5,6

6
Hi there 1,2,3,4,5,6 8 aaa 1,2,1,2 4 3 1.75 3

Multiplies two values

2*4 a * 3 1,2 * 2

Subtracts two values Divides two values

62 6/2 7/4

Returns the remainder from a division

7%4

PowerShell Console
Externe commandos uitvoeren
Voorbeelden
Ipconfig Tracert

Werken in de oude console


Cmd /c Help Exit

Oude commandos werken in PowerShell

PowerShell Console
Cmdlets (Commandlets)
Ingebouwde commandos die specifieke functies uitvoeren Werkwoord-ZelfstandigNaamwoord naampatroon
Action(Verb)-Object of the action(Noun) naming convention Bedoeling hiervan is de Cmdlets zelfomschrijvend te maken

PowerShell Console
Cmdlets
Voorbeeld: Get-Command
Zonder parameters toont deze Cmdlet de beschikbare Cmdlets en andere elementen uit PowerShell Met parameters haalt deze Cmdlet basis informatie op over bv. een specifieke Cmdlet Voorbeelden
Get-Command *test* (-CommandType cmdlet) (* = Wildcard) Get-Command verb get (add, clear, compare, ) Get-Command noun process (service, )

PowerShell Console
Cmdlets
Voorbeeld: Sort-Object
Zal objecten sorteren adhv. eigenschappen-waarden 1 of meerdere eigenschappen kunnen worden meegegeven om op te sorteren Voorbeeld
Sort-Object property prop1, prop2

PowerShell Console
Help functie
Help over de verschillende Cmdlets
Get-Help Get-Process: help weergeven van de Cmdlet Get-Process
-detailed, -full, -examples

Wildcard karakters in help commandos


Get-Help *: alle help onderwerpen weergeven Get-Help Get-*: lijst weergeven van Cmdlets die beginnen met Get Get-Command *Service*: lijst weergeven van Cmdlets die het woord Service bevatten

PowerShell Console
Parameters
Voegen informatie toe aan een Cmdlet zodat deze weet wat te doen Voorbeelden:
Get-ChildItem (zonder parameters > huidige directory) Get-ChildItem path c:\Windows (=parameter) Get-ChildItem path c:\Windows filter *.exe (=parameters)

Get-Help Cmdlet full


Geeft overzicht van mogelijke parameters van de Cmdlet

PowerShell Console
Aliassen (oude gewoontes) vs. Cmdlets
Nieuwe Cmdlet commandos zijn zo ontworpen zodat ze nog steeds kunnen opgeroepen worden via de oude conventionele naam
Gebruiksgemak bij veel gebruikte commandos

Een overzicht van alle alias names & hun definities:


Get-Alias

PowerShell Console
Aliassen (oude gewoontes) vs. Cmdlets
Enkele voorbeelden:
dir, ls -> Get-ChildItem copy -> Copy-Item cls -> Clear-Host help, man -> Get-Help

Een alias name & zijn definitie bekomt men via een parameter name:
Get-Alias name Dir

PowerShell Console
PowerShell Scripts
Deze hebben de extensie .ps1 Typ eender welk PowerShell commando dat we tot nu toe gezien hebben in notepad en bewaar als test.ps1 Open dan het PowerShell script vanuit de PowerShell console

PowerShell Console
PowerShell Scripts
Externe bestanden openen
Absoluut pad gebruiken Set-ExecutionPolicy RemoteSigned Set-ExecutionPolicy Default

PowerShell Console
Variabelen
Worden aangeduid met het startteken $ Kan bestaan uit getallen, letters en speciale karakters zoals _ Zijn hoofdletter ongevoelig Moeten niet expliciet worden gecreerd voor gebruik Zelf gecreerde & voorgedefinieerde variabelen

PowerShell Console
Variabelen
Zelf gecreerde variabelen
$variabeleNaam = waarde Waarden toekennen aan variabelen via =
$value1 = 10, $value2 = 20

Waarden oproepen via de variabelen


$value1, $value2

Resultaten van Cmdlets toekennen aan variabelen Rekenen met variabelen

PowerShell Console
Operator = += Example $a = 3 $a += 2 $a = $a + 2 Equivalent Description Sets the variable to the specified value. Performs the addition operation in the existing value, then assigns the result back to the variable.

-=

$a -= 13

$a = $a -13

Performs the subtraction operation in the existing value, then assigns the result back to the variable.
Multiplies the value of a variable by the specified value and appends to the existing value. Divides the value of a variable by the specified value. Divides the value of a variable by the specified value and assigns the remainder (modulus) to the variable.

*=

$a *= 3

$a = $a * 3

/= %=

$a /= 3 $a %= 3

$a = $a / 3 $a = $a % 3

PowerShell Console
Variabelen
Variabelen in gebruik
PowerShell houdt alle variabelen en zijn waarden bij in een virtuele drive genaamd variable:
Get-ChildItem variable: (alle gedefinieerde variabelen) Get-ChildItem variable:value* (wildcard) Get-ChildItem variable: -include value* -exclude *1* Gebruik van parameters

PowerShell Console
Variabelen
Controle of een variabele bestaat
Via de Cmdlet Test-Path kan je controleren of een bestand bestaat Zoals gezegd worden alle variabelen bewaard in variable: Test-Path variable:value1

PowerShell Console
Variabelen
Variabelen verwijderen
Automatisch bij afsluiten PowerShell Expliciet via Remove-Variable value1

Speciale variabele Cmdlets


Get-command *variable*

PowerShell Console
Variabelen
Constanten
Variabelen waarvan de waarde niet kan gewijzigd worden New-Variable test value 100 option ReadOnly Om te verwijderen:
Remove-Variable test force

PowerShell Console
Variabelen
Beschrijving
New-Variable name test value 100 description test Via $test & Get-ChildItem variable:test wordt de beschrijving evenwel niet getoond De beschrijving is geen belangrijke eigenschap van een variabele en wordt daarom niet standaard getoond. Dit dient expliciet gevraagd te worden Dit kan bijvoorbeeld via de Cmdlet Format-Table Hierover later meer

PowerShell Console
Variabelen
Voorgedefinieerde variabelen
Automatische PowerShell variabelen Bevatten reeds nuttige data Gebruikt door PowerShell voor interne doeleinden Zijn beschikbaar vanaf PowerShell is ingeladen Worden immers ingeladen tijdens opstarten Get-Childitem variable:

PowerShell Console
Variabelen
Voorgedefinieerde variabelen
Verschillen niet van zelf gedefinieerde variabelen $HOME Get-Help about_Automatic_variables

PowerShell Console
Variabelen
Omgevingsvariabelen
Oude consoles (cmd, ) gebruiken deze Worden beheerd door Windows zelf Belangrijke bron voor PowerShell Bevatten veel details over het OS Ermee werken is identiek als werken met zelf gedefinieerde en voorgedefinieerde variabelen

PowerShell Console
Variabelen
Omgevingsvariabelen
Je hoeft PowerShell enkel te vertellen welke variabele je wenst te gebruiken Voor omgevingsvariabelen > env: Enkele voorbeelden:
Locatie Windows folder > $env:windir

Door env: toe te voegen, laat je PowerShell weten niet te zoeken in de variable: dir, maar in de Windows omgevingsvariabelen

PowerShell Console
Variabelen
Omgevingsvariabelen
In tegenstelling tot PowerShell variabelen die in de dir variable: zitten, bevinden omgevingsvariabelen zich in de virtuele drive env: Overzicht: Get-Childitem env: Creatie: $env:testvar = 12 Verwijderen:
del env:testvar

Na afsluiten PowerShell keren de variabelen terug naar hun originele waarde

PowerShell Console
Piping
| : data (=resultaat) Cmdlet (=commando) links worden doorgegeven als input (=invoer) aan de Cmdlet rechts van het pipe symbool Dit geheel heet men ook een pipeline Men gebruikt pipelines om complexe commandos samen te stellen Een PowerShell pipeline is een object pipeline De data die wordt doorgegeven tussen Cmdlets zijn objecten

PowerShell Console
Piping
Voorbeeld:
Get-ChildItem | Get-Member
Cmdlet Get-Member haalt de eigenschappen en methodes op van een object Om het object te specifiren, dient men gebruik te maken van piping

PowerShell Console
Piping
Resultaat redirecten
Get-ChildItem | Out-Printer Get-ChildItem | Out-File mylog.txt
Append

Get-ChildItem | Out-Host -Paging

PowerShell Console
Piping
Resultaat opmaken
Tabelopmaak:
Format-Table (Get-Help Format-Table voor meer info) Voorbeeld: Get-ChildItem | Format-Table Property Name,Length

Lijstopmaak:
Format-List (Get-Help Format-List voor meer info) Voorbeeld: Get-ChildItem | Format-List Property Name,Length

PowerShell Console
Piping
Resultaat sorteren
Get-ChildItem| Sort-Object property Length, Name
Gesorteerde directory lijst Ascending/descending

PowerShell Console
Piping
Resultaat groeperen
Get-Service | Group-Object Property Status
Groepeert gelijkaardige objecten en geeft hun aantal weer Eigenschap dient om Group-Object te laten weten welke de criteria zijn om op te groeperen

PowerShell Console
Piping
Resultaat filteren (pipeline filter)
Wanneer je enkel bent genteresseerd in specifieke objecten, laat dan Cmdlet Where-Object het resultaat onderzoeken en enkel deze objecten doorlaten die aan bepaalde criteria voldoen Opbouw: | Where-Object {criteria} {} = een scriptblok

PowerShell Console
Piping
Resultaat filteren (pipeline filter)
{Criteria} bestaat uit 3 delen
Eigenschap van het huidig object (in de pipeline voorgesteld door variabele $_) Vergelijkingsoperator (-eq, -ne, -lt, -gt, -like, -contains) Waarde

Oefening: Stel dat je enkel de running services wil weergeven, welk commando zou je dan gebruiken?

PowerShell Console
Operator -eq -ceq -ieq -ne -cne -ine Description Equals Not equals Example 5 eq 5 5 ne 5 Result $true $false

-gt -cgt -igt -ge -cge -ige


-lt -clt -ilt -le -cle -ile -contains -ccontains -icontains -notcontains -cnotcontains -inotcontains

Greater than Greater than or equal


Less than Less than or equal The collection on the left side contains the value specified on the right side. The collection on the left side does not contain the value on the right side.

5 gt 3 5 ge 3
5 lt 3 5 le 3 1,2,3 contains 2

$true $true
$false $false $true

1,2,3 notcontains 2

$false

Informatie over Computers


Lijst maken van de Desktop Settings
Get-WmiObject Class Win32_Desktop -ComputerName .

Lijst maken van de BIOS informatie


Get-WmiObject -Class Win32_BIOS

Lijst maken van de processor informatie


Get-WmiObject -Class Win32_Processor

Lijst maken van de computerfabrikant en het -model


Get-WmiObject -Class Win32_ComputerSystem

Lijst maken van de genstalleerde hotfixes


Get-WmiObject -Class Win32_QuickFixEngineering

Informatie over Computers


Lijst maken van de printers op een PC
Gwmi Win32_Printer -ComputerName pcname

Een computer afsluiten of heropstarten


(gwmi Win32_OperatingSystem).Reboot()

Werken met registersleutels


Gebruik het register als een bestandssysteem
Get-ChildItem HKLM :\Software

Lezen van registerwaarden


Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Run

Nieuwe registersleutels aanmaken


New-Item Path HKCU:\Software\DeleteMe

Nieuwe registerwaarde aanmaken


New-ItemProperty HKCU:\Software\DeleteMe Name MyEntry PropertyType String Value My Text

Werken met registersleutels


Verwijderen van een registerwaarde
Remove-ItemProperty HKLM :\Software\DeleteMe Name MyEntry

Verwijderen van een volledige registersleutel inclusief onderliggende subsleutels en waarden


Remove-Item HKLM :\Software\DeleteMe -Recurse

Extra oefeningen
Resultaat opmaken met Format-* Cmdlets
Get van alle services en hun Name, Status, displayname en servicetype. Get een tabel van alle services en hun Name, Status, displayname en servicetype. Zorg ervoor dat alles goed wordt weergegeven. Organiseer uw servicestabel op status.
HINT: gebruik de Get-Service cmdlet om de services in een lijst weer te geven

Extra oefeningen
Werken met Bestanden, Folders and Register Keys
Maak een lijst van alle bestanden en folders in de Windows directory. Maak een lijst van alle bestanden en folders in de Windows directory maar zorg ervoor dat de data wordt weergeven per pagina. Maak een folder in de C: drive. Maak een bestand in deze folder. Hernoem dit bestand. Kopieer deze folder inclusief de inhoud ervan. Maak een registerkey in HKCU:\Software\Microsoft\Windows\CurrentVersion Verwijder de registerkey die juist heeft aangemaakt.

Terugblik op de objectieven
U bent nu in staat om:
Te begrijpen wat de Powershell juist is Begrijpen wat de basisbouwstenen zijn in de Powershell De Powershell te gebruiken om basisadministratie van Windows uit te voeren

Dank u voor uw aandacht.

You might also like