Automatizace Windows, naplánované úlohy a Powershell

Podobné dokumenty
Active Directory aktivně

Jako skript se nabízí BAT soubory, VBScript či PowerShell. Zpracovány jsou druhé dva.

Serverové systémy Microsoft Windows

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

PowerShell 2.0 Dohledování serverů

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Nápověda k aplikaci EA Script Engine

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE

Windows Server 2012 Už ani klik...

Semestrální práce z DAS2 a WWW

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Co mi to tu vlastně běží?

Serverové systémy Microsoft Windows

Group Policy od A do Z. Lukáš Brázda MCT, MCSA, MCSE lukas@brazda.org

Úvod do Operačních Systémů

Group policy. Jan Žák

Popis souboru pro generování reportů *.report

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Windows Powershell v roce 2013

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Použití databází na Webu

PG 9.5 novinky ve vývoji aplikací

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

INSTALACE WINDOWS 2012

Jazyk C# - přístup k datům

SQL - trigger, Databázové modelování

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Diplomová práce Mobilní správa Windows serveru v prostředí KIV

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Windows 2008 R2 - úvod. Lumír Návrat

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Backup & recovery, SQL Server Agent, Alerts Jiří Tomeš

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

Instalace IBM Notes 9 na Windows Server 2012 Core

Tabulka fotbalové ligy

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

ZÁLOHA A OBNOVA ABRA GEN

Podzim povzdychne, stále mumlá a odchází. On je prostě šaman!

FIREMNÍ CERTIFIKÁT V APLIKACI PŘÍMÝ KANÁL NÁVOD PRO KLIENTY

NSS - Cache 5. LECTURE MARTIN TOMASEK

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava

Rozšiřování a upravování stávající funkcionality PLToolbox, Orafce

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

KAPITOLA 1 SOCIÁLNÍ SÍTĚ A PHP...17

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

O2 Managed Backup & Restore Power

Virtual Private Database (VPD) Jaroslav Kotrč

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Zvýšení zabezpečení počítače

Skriptovací jazyky. Obsah

použití spouštění database program units spouštění external executables Na základě Time-based scheduling Event-based scheduling Dependency scheduling

Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75

ZÁLOHA A OBNOVA ABRA GEN

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Michal Krátký, Miroslav Beneš

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Průvodce nastavením. Microsoft Office 365

KAPITOLA 7. PowerShell a sítě. V této kapitole:

SQL. relační databázový systém. v úvodní kurz jazyka SQL

Univerzita Pardubice. Fakulta elektrotechniky a informatiky

TIA Portal Openness Generování projektu.

Životní cyklus IT systémů

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

1. Téma 12 - Textové soubory a výjimky

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

SQL injection princip a ochrana

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

SQL injection jak ji možná neznáte Roman Kümmel

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

První pomoc pro DBA. administrátory CIDUG. Milan Rafaj IBM Česká republika

Jak ušetřit místo a zároveň mít data snadno dostupná. David Turoň

Úvod do Operačních Systémů

PB071 Programování v jazyce C

Nové jazykové brány do Caché. Daniel Kutáč

SQL a XML jako alternativa ke klasickým unixovým nástrojům

Průvodce nastavením Microsoft Office 365. pro firmware 15

Databázové systémy I

Programování v Pythonu

První kapitola úvod do problematiky

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

2012 (červen) Microsoft Sharepoint Portal Server. Microsoft Live Communications Server 2003 Řešení pro online komunikaci. Microsoft Exchange

Mechanismus obarvení řádků browse

Využití identity managementu v prostředí veřejné správy

Zápis programu v jazyce C#

PC detektiv Instalace AWEDBA Archivace Obnova z archivace AWEDBA

eduroam.cz správa a deployment pomocí Ansible

Služba ve Windows. Služba (service) je program

Nástroje na správu databáze

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Transkript:

Automatizace Windows, naplánované úlohy a Powershell PowerShell a režim bez interakce Patrik Malina www.patrikmalina.eu O čem bude řeč Skripty v Powershellu jako naplánované úlohy Možnosti a úskalí spouštění Powershellu Volání externích programů s parametry Ovládání plánovače úloh Powershellem Zachycení a zpracování událostí ve Windows Výběr novinek Powershellu 3 20. 2. 2012 Patrik Malina 2

Naplánované úlohy Powershell a dávkové zpracování powershell.exe /? powershell.exe -Command powershell.exe -File powershell.exe -EncodedCommand 20. 2. 2012 Patrik Malina 3 Naplánované úlohy Powershell a dávkové zpracování powershell.exe -Command powershell.exe -command get-date powershell.exe -command get-process powershell powershell.exe -command get-date ; get-host powershell.exe -command {get-date} powershell.exe -command {get-date ; get-service} powershell.exe -command "&{get-date}" 20. 2. 2012 Patrik Malina 4

Naplánované úlohy Powershell a dávkové zpracování powershell.exe -File powershell.exe.\script.ps1 powershell.exe D:\data\script.ps1 powershell.exe -file D:\data\script.ps1 powershell.exe -File 20. 2. 2012 Patrik Malina 5 Naplánované úlohy Powershell a vstupní parametry powershell.exe D:\data\script.ps1 powershell.exe -file D:\data\script.ps1 1 powershell.exe D:\data\script.ps1 1 abc 20. 2. 2012 Patrik Malina 6

Naplánované úlohy Powershell a bezpečnostní politiky powershell.exe -ExecutionPolicy ByPass Unrestricted Signed AllSigned 20. 2. 2012 Patrik Malina 7 Naplánované úlohy Externí komponenty: Snap-In Try {add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin -ErrorAction Stop; #2007 } Catch {Write-host "Exchange 2007 snap-in load failed"} 20. 2. 2012 Patrik Malina 8

Naplánované úlohy Externí komponenty: Module try { import-module grouppolicy -ErrorAction Stop } Catch { Write-Host "Group Policy management module import failed; check GPMC module availability." } 20. 2. 2012 Patrik Malina 9 Naplánované úlohy Externí komponenty: Console File PowerShell -PSConsoleFile xx.psc1 <?xml version="1.0" encoding="utf-8"?> <PSConsoleFile ConsoleSchemaVersion="1.0"> <PSVersion>1.0</PSVersion> <PSSnapIns> <PSSnapIn Name="Quest.ActiveRoles.ADManagement" /> </PSSnapIns> </PSConsoleFile> 20. 2. 2012 Patrik Malina 10

Naplánované úlohy Powershell a proměnné prostředí (dir env:username).value Get-Content env:username $env:username 20. 2. 2012 Patrik Malina 11 Možnosti a úskalí Potřebujeme hesla I. Read-Host -AsSecureString $secure_string_pwd = convertto-securestring "P@ssW0rD!" -asplaintext -force 20. 2. 2012 Patrik Malina 12

Možnosti a úskalí Potřebujeme hesla II. $pass = cat pass.txt $secure_string_pwd = convertto-securestring $pass -asplaintext -force 20. 2. 2012 Patrik Malina 13 Možnosti a úskalí Potřebujeme hesla III. function Get-EncryptedText($text) { $Ptr = [System.Runtime.InteropServices.Marshal ]:: SecureStringToCoTaskMemUnicode($text) $result = [System.Runtime.InteropServices.Marshal]:: PtrToStringUni($Ptr) [System.Runtime.InteropServices.Marshal]::ZeroFreeCoT askmemunicode($ptr) $result } 20. 2. 2012 Patrik Malina 14

Možnosti a úskalí Potřebujeme hesla III. Get-EncryptedText $secure_string_pwd 20. 2. 2012 Patrik Malina 15 Možnosti a úskalí Potřebujeme hesla IV. Get-WmiObject win32_share -ComputerName stroj1 -Credential admin $cred = New-Object System.Management.Automation.PSCredential( "Admin",$secure_string_pwd) Get-WmiObject win32_share -ComputerName stroj1 -Credential $cred 20. 2. 2012 Patrik Malina 16

Možnosti a úskalí Potřebujeme hesla V. $cred1 = New-Object System.Net.NetworkCredential $cred1.domain = "domena" $cred1.username = "Admin" $cred1.securepassword = $secure_string_pwd $cred1 fl * 20. 2. 2012 Patrik Malina 17 Možnosti a úskalí Tok výstupních dat $VerbosePreference = "continue" $DebugPreference = "continue" $WarningPreference = "continue" $ErrorActionPreference = "continue" Write-Verbose "Start" Write-Output "Startuji..." Write-Verbose "Ctu data" $verze = (Get-Host).version Write-Verbose "Chystam vypis" Write-Debug "Verze nactena" Write-Warning "Pozor, zobrazime verzi PowerShellu!" Write-Verbose "Vypis" Write-Output $verze Writte-Host $verze #zamerna chyba Write-Verbose "Hotovo" Write-Debug "Konec uspesne" 20. 2. 2012 Patrik Malina 18

Možnosti a úskalí Tok výstupních dat $blok = [powershell]::create() $script = ((cat.\streams.ps1) -join "`n" ) $scriptobjekt = $executioncontext.invokecommand.newscriptblock($scrip t) $blok.addscript($scriptobjekt) Out-Null $blok.streams $blok.invoke() $blok.streams 20. 2. 2012 Patrik Malina 19 Možnosti a úskalí Joby I. $myjobs = @() $maxconcurrentjobs = 4 $waittimeforstart = 300 $waittimeforcollect = 1800 while (-not (($myjobs where {$_.state -like "Run*"} measure).count -lt $maxconcurrentjobs)) { Start-Sleep -Seconds $waittimeforstart } 20. 2. 2012 Patrik Malina 20

Možnosti a úskalí Joby II. $myjobs += Start-Job -InputObject $_ -ScriptBlock {} $myjobs where {($_.state -like "Complet*") -and ($_.HasMoreData)} Receive-Job while (($myjobs where {$_.state -like "Run*"} Measure-Object).count -gt 0) {} 20. 2. 2012 Patrik Malina 21 Externí programy Základní provedení ipconfig /all & 'C:\Program Files (x86)\log Parser 2.2\LogParser.exe' 20. 2. 2012 Patrik Malina 22

Externí programy Základní provedení & 'C:\Program Files (x86)\log Parser 2.2\LogParser.exe' -i:evt -fulltext:of F -o:csv -tabs:off "SELECT * INTO output.csv FROM SYSTEM" 20. 2. 2012 Patrik Malina 23 Externí programy Základní provedení $arg1 = "-i:evt" $arg2 = "-fulltext:off" $arg3 = "-o:csv" $arg4 = "-tabs:off" $arg5 = "SELECT * INTO output.csv FROM SYSTEM" $allargs = @($arg1,$arg2,$arg3,$arg4,$arg5) & 'C:\Program Files (x86)\log Parser 2.2\LogParser.exe' $allargs 20. 2. 2012 Patrik Malina 24

Externí programy Základní provedení $cmd = "ipconfig.exe" & $cmd $cmd = "ipconfig.exe /all" Invoke-Expression -Command $cmd 20. 2. 2012 Patrik Malina 25 Externí programy Základní provedení [management.automation.psparser]::tokenize('p ing 127.0.0.1', [ref]$null) 20. 2. 2012 Patrik Malina 26

Externí programy Základní provedení [management.automation.psparser]::tokenize('p ing 127.0.0.1', [ref]$null) 20. 2. 2012 Patrik Malina 27 Ovládání plánovače úloh Schtasks.exe $taskname = $myinvocation.mycommand.definition -replace '\W','_' schtasks /create /sc MINUTE /MO 5 /tn "$taskname" /tr "powershell -c $($myinvocation.mycommand.definition)" return; #switch to directory where the script lives pushd (split-path -parent $myinvocation.mycommand.definition) #insert useful code here write-host "Hello World" popd 20. 2. 2012 Patrik Malina 28

Ovládání plánovače úloh Schtasks.exe #nazev ulohy $TN = "Nocni udrzba" #ucet pro ulohu -- lokalni system $RU = "SYSTEM" #plan spousteni -- denne $SC = "Jen jednou" #cas spusteni - od ted za 10 minut $ST = "{0:HH:mm:ss}" -f ((get-date).addminutes(3)) #datum spusteni - tento den $SD = get-date -UFormat "%d/%m/%y" #uloha $TR = "calc.exe" schtasks.exe /Create /TN $TN /RU $RU /SC $SC /ST $ST /SD $SD /TR $TR 20. 2. 2012 Patrik Malina 29 Ovládání plánovače úloh Rozhraní COM http://taskscheduler.codeplex.com/ 20. 2. 2012 Patrik Malina 30

Ovládání plánovače úloh Rozhraní COM $agent = New-Object -ComObject "Scheduler.SchAgent" $agent.refresh() $uloha = $agent.createtask('moje uloha') $uloha.applicationname = 'calc.exe' $uloha.creator = 'Patrik' $uloha.setaccountinformation('stroj1\patrik','*** *****') $uloha.save() $uloha.run() 20. 2. 2012 Patrik Malina 31 Ovládání plánovače úloh Rozhraní COM $spoust = $uloha.triggers.add() $spoust.triggertype = 1 $spoust.beginday = get-date $spoust.starttime = ((get-date).addminutes(5)) $spoust.update() $uloha.save() $agent.refresh() 20. 2. 2012 Patrik Malina 32

Ovládání plánovače úloh Rozhraní COM Win 7 & spol. $scheduler = New-Object -ComObject Schedule.Service $scheduler.connect() $scheduler 20. 2. 2012 Patrik Malina 33 Ovládání plánovače úloh Rozhraní COM Win 7 & spol. http://archive.msdn.microsoft.com/powershellpack 20. 2. 2012 Patrik Malina 34

Ovládání plánovače úloh Rozhraní COM Win 7 & spol. New-Task Add-TaskTrigger -At "3:00 PM" -DayOfMonth 1,2,3,4,5 -MonthOfYear January, April, December Add-TaskAction -Path calc.exe Register-ScheduledTask (Get-Random) 20. 2. 2012 Patrik Malina 35 Události v Powershellu Sledování a reakce na události z.net Frameworku z rozhraní WMI Princip předplatného registrace subscription Hromadění událostí ve frontě není nutná bezprostřední reakce 20. 2. 2012 Patrik Malina 36

Události v Powershellu WMI postaru $a = 0 $timespan = New-Object System.TimeSpan(0, 0, 1) $scope = New-Object System.Management.ManagementScope("\\.\root\cimV2") $query = New-Object System.Management.WQLEventQuery ` (" InstanceDeletionEvent",$timespan, "TargetInstance ISA 'Win32_Process'" ) $watcher = New-Object System.Management.ManagementEventWatcher($scope,$query) do { $b = $watcher.waitfornextevent() $b.targetinstance.name } while ($a -ne 1) 20. 2. 2012 Patrik Malina 37 Události v Powershellu WMI nově Register-WmiEvent -query "SELECT * FROM ` InstanceDeletionEvent WITHIN 3 ` WHERE TargetInstance ISA 'Win32_Process'" ` -SourceIdentifier procesy ` -Action {$global:udalost=$event} 20. 2. 2012 Patrik Malina 38

Události v Powershellu WMI nově Register-WmiEvent -query "SELECT * FROM ` InstanceDeletionEvent WITHIN 3 ` WHERE TargetInstance ISA 'Win32_Process'" ` -SourceIdentifier procesy ` -Action {$global:udalost=$event} Get-Event Get-Event -SourceIdentifier procesy 20. 2. 2012 Patrik Malina 39 Novinky jazyka PSH 3.0 Implementace modulů Odkazování Automatické natahování $psmoduleautoloadingpreference = "all" Get-Process fox* foreach kill 20. 2. 2012 Patrik Malina 40

Novinky jazyka PSH 3.0 Joby rovnou jako plánované úlohy $trigger = New-JobTrigger Daily At 4am Register-ScheduledJob Name MyScheduledJob ScriptBlock { DoSomething } Trigger $trigger Get-ScheduledJob 20. 2. 2012 Patrik Malina 41 Novinky jazyka PSH 3.0 Přesměrování datových proudů Pipeline 1 Error 2 Warning 3 Verbose 4 Debug 5 3> 4>> 5>&1 6>&4 Get-Service 11111 2> error.txt Import-Module bitstransfer -Verbose 4>verbose.txt 20. 2. 2012 Patrik Malina 42

Zdroje informací PowerShellPack http://archive.msdn.microsoft.com/powershellpack Task Scheduler Managed Wrapper http://taskscheduler.codeplex.com/ Invoke-CmdScript.ps1 http://www.leeholmes.com/blog/2006/05/11/nothing-solves-ev 20. 2. 2012 Patrik Malina 43 Zdroje informací PowerShellPack http://archive.msdn.microsoft.com/powershellpack Task Scheduler Managed Wrapper http://taskscheduler.codeplex.com/ Invoke-CmdScript.ps1 http://www.leeholmes.com/blog/2006/05/11/nothing-solves-ev 20. 2. 2012 Patrik Malina 44

Zdroje informací Jak vyzrát na Windows PowerShell 2.0 http://knihy.cpress.cz/ knihy/pocitacovaliteratura/administrace /jak-vyzrat-na- windows-powershell- 2-0/ http://patrikmalina.cz 20. 2. 2012 Patrik Malina 45 Dotazy a diskuse 20. 2. 2012 Patrik Malina 46

Další informace Autor www.patrikmalina.eu Kontat it@patrikmalina.eu 20. 2. 2012 Patrik Malina 47