PowerShell basic

February 1, 2014 Josef Kubat Microsoft Windows 2 minutes, 42 seconds

PowerShell basic

http://en.wikipedia.org/wiki/Windows_PowerShell http://www.powershellpro.com/powershell-tutorial-introduction/powershell-tutorial-conditional-logic/ http://pechanec.cz/windows-powershell/

Windows 7 - %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noprofile ISE - grafický editor/studio na skriptování PowerGUI.org - Lepší než ISE, SW třetí strany (není vyvíjen MS)

Názvosloví:

Cmdlet - specializované třídy, napsané v .NET kompatibilním jazyce

Klávesové zkratky:

Doplňování - Tab/Shift Tab Historie (šipky, F7, *-History, Get-History) Profily (stroj, uživatel) Aliasy (výchozí mohou mít konflikt s uživatelským) profile.ps1 Klávesové příkazy - F1-F12

g - historie od G

Základy:

  • žádné skripty (Get(Set)-ExecutionPolicy restricted .ps1 asociováno s Notepad Vyžadováno určení cesty .\skript.ps1 nebo absolutně (C:\skript.ps1) Get-ExecutionPolicy Set-Execution Unrestricted˘

Parametry:

  • pojmenované: Get-EventLog -Logname System
  • poziční: Get-EventLog System
  • povinné: LogName:

Přepínače:

  • společné (about_CommonParameters)
  • "Cmdletové"

Filtry

  • include/-exclude Get-Service -include a*
  • filter Get-ADuser -filter {Name -eq "Admin"}

Zřetězíme příkazy svislítkem

  • výstup se odesílá pomocí objektu

Where-Object

Get-Service | Where-Object{$_.Status -eq "running"}

  • $ tj.každý řádek

Sort-Object

Get-Process | sort-object VM -Descending

Select-Object

Get-Process | select ProcessName, ID

Výstupy, Exporty, Importy

Out-File Out-Printer Out-Null Out-GridView Export-CSV (Import-CSV) Export-Clixml (Import-Clixml)

Práce s texty

Get-Content Select-String Get-Content soubor.txt -Encoding UTF7 | Set-Content test.txt -Encoding UTF8

Import modulů pro AD

Get-Module (nainstalované) Get-Module -ListAvailable (k dispozici) Import-Module ActiveDirectory Get-Command -Module ActiveDirectory

Rozvoj - Proměnné

Proměnné

  • Uvezené "$"
  • "Beztypové"
  • Lze i příště typové

$prvni = 1 $prvni = "Retezec" [Int32]$Druha = 4 $Druha = "Text" $Procesy = Get-Process Get-Date | Get-Member

$now = Get-Date $now.day 10

  • Dočasná proměnná (Get-Date).day

Pole

$pole = 1,2,3,4 # $pole[2] $pole[-1] - pocet prvku $pole += 5 (přidání do pole)

$servery = "Server1","S2","S3" Get-Service -ComputerNAme $servery

Hash table (pojmenované pole) $dny = @{"Prvni"="Pondeli";"Druhy"="Utery"} $dny.Prvni

Operátory

Aritmetické (-AND, -OR) Přiřazovací Porovnávací Logické Přesměrování (>, >>, 2>, and 2>&1) Typové (-is, -isnot, -as) Ostatní

help about_operators

Por. operátory

-eq: Equal to -ne: Not equal to -le: Less than or equal to -gt: Greater than -lt: Less than -like: -nolike -match -notmatch -contains -notcontains -replace

Senzitivní varianty c i (ceq,ieq) Get-Service | where {$.Status -like "run*"} Get-Service | where {$.Status -like "run" -OR $_.Status -like "Stop" } 5 -eq 4

$False (neni promenna)

Cykly

While Do-While For (užívá se v pipelajně) Foreach

$i = 1 do { $i++ } while ($i -le 5)

Podmínky

If (podmínka) {blok} Elseif {blok2}

Get-Process | foreach {if($.VM -gt 400MB) {Write-Host $.Name,$_.VM}}

Větvení - switch (U verzí systemu či verzí programů)

$verze = "V1" switch ($verze) { V1 {"Windows 1"; break} V2 {"Windows 2"; break} Default {"Neznama verze"}

Switch [-regx|-wildcard|-exact][-casesensitive]

Rozvoj - Identity, hesla

Read-Host "Heslo" Read-Host "Heslo" -AsSecureString ConvertTo-SecureString $heslo = Read-Host "Heslo" -AsSecureString Get-Credential

Measure-Object Get-Member

$lide = Import-CSV .\lide.csv -Delimiter ";" $lide[0..2] | Select Prijmeni, email

Get-Command *service cmdlet New-Service (Zaregistruje novou sluzbu - snad cehokoliv)

Get-Process Stop-Process IDProcesu(Calc) Get-Process Calc | Stop-Process Get-Process Calc | Get-Member

$calc = Get-Process Calc $calc.kill()

Ukoly

1) Běžící služby zeleně, neběží červeně (použij: Get-Service, Foreach, If) Get-Service | foreach {if($.Status -like "Running") {Write-Host $.Status, $.Name -ForegroundColor Green} else {Write-Host $.Status, $_.Name -ForegroundColor Red}}

2) Pět největších souborů a složek v ProgramFiles get-childitem -recurse | Sort Length -Descending | select Name, Directory, length -First 5

3) Všechny soubory na disku od Admina (použij: Get-Aoc) Get-Acl * | Where-Object{$_.Owner -like "BUILTIN\Administrators"}

Otázky

Pojmenování a spouštění skriptu (ps1?) Spouštění skriptu Funkce Cykly Roury Grep V1, V2, V3, V4 (jak importovat moduly/framework?)

  • po restartu zůstává importovaný/deimportovat? Přesměrovat do souboru Get-Service | Out-File C:_Data_\sluzby.txt

Tags:

PowerShell Microsoft Reference: PowerShell - příklady