powers hell

52
PowerShell Door Davy Maes

Upload: catifo

Post on 27-Oct-2015

41 views

Category:

Documents


3 download

DESCRIPTION

read

TRANSCRIPT

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 commando’s 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

* Multiplies two values 2 * 4

“a” * 3

1,2 * 2

8

“aaa”

1,2,1,2

- Subtracts two values 6 – 2 4

/ Divides two values 6 / 2

7 / 4

3

1.75

% Returns the remainder

from a division

7 % 4 3

PowerShell Console

• Externe commando’s uitvoeren

– Voorbeelden

• Ipconfig

• Tracert

– Werken in de ‘oude’ console

• Cmd /c Help

• Exit

– ‘Oude’ commando’s werken in PowerShell

PowerShell Console

• Cmdlets (Commandlets)

– Ingebouwde commando’s die specifieke functies uitvoeren

– Werkwoord-ZelfstandigNaamwoord naampatroon

• Action(Verb)-Object of the action(Noun) namingconvention

• 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 CmdletGet-Process

– -detailed, -full, -examples

– Wildcard karakters in help commando’s• 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 commando’s zijn zo ontworpen zodat ze nog steeds kunnen opgeroepen worden via de oude conventionele naam

• Gebruiksgemak bij veel gebruikte commando’s

– 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 gecreëerd voor gebruik

– Zelf gecreëerde & voorgedefinieerde variabelen

PowerShell Console

• Variabelen

– Zelf gecreëerde 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 ConsoleOperator Example Equivalent Description

= $a = 3 Sets the variable to the specified value.

+= $a += 2 $a = $a + 2 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.

*= $a *= 3 $a = $a * 3 Multiplies the value of a variable by the

specified value and appends to the

existing value.

/= $a /= 3 $a = $a / 3 Divides the value of a variable by the

specified value.

%= $a %= 3 $a = $a % 3 Divides the value of a variable by the

specified value and assigns the remainder

(modulus) to the variable.

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 dirvariable: 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 commando’s 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 specifiëren, 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 geïnteresseerd 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 ConsoleOperator Description Example Result

-eq -ceq -ieq Equals 5 –eq 5 $true

-ne -cne -ine Not equals 5 –ne 5 $false

-gt -cgt -igt Greater than 5 –gt 3 $true

-ge -cge -ige Greater than or equal 5 –ge 3 $true

-lt -clt -ilt Less than 5 –lt 3 $false

-le -cle -ile Less than or equal 5 –le 3 $false

-contains

-ccontains

-icontains

The collection on the left side

contains the value specified on

the right side.

1,2,3 –contains 2 $true

-notcontains

-cnotcontains

-inotcontains

The collection on the left side

does not contain the value on

the right side.

1,2,3 –notcontains 2 $false

Informatie over Computers

• Lijst maken van de Desktop SettingsGet-WmiObject –Class Win32_Desktop -ComputerName .

• Lijst maken van de BIOS informatieGet-WmiObject -Class Win32_BIOS

• Lijst maken van de processor informatieGet-WmiObject -Class Win32_Processor

• Lijst maken van de computerfabrikant en het -modelGet-WmiObject -Class Win32_ComputerSystem

• Lijst maken van de geïnstalleerde hotfixesGet-WmiObject -Class Win32_QuickFixEngineering

Informatie over Computers

• Lijst maken van de printers op een PCGwmi Win32_Printer -ComputerName pcname

• Een computer afsluiten of heropstarten(gwmi Win32_OperatingSystem).Reboot()

Werken met registersleutels

• Gebruik het register als een bestandssysteemGet-ChildItem HKLM :\Software

• Lezen van registerwaardenGet-ItemProperty

HKCU:\Software\Microsoft\Windows\CurrentVersion\Run

• Nieuwe registersleutels aanmakenNew-Item –Path HKCU:\Software\DeleteMe

• Nieuwe registerwaarde aanmakenNew-ItemProperty HKCU:\Software\DeleteMe –Name MyEntry –

PropertyType String –Value “My Text”

Werken met registersleutels

• Verwijderen van een registerwaardeRemove-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.