1 / 61

Powershell

Silvie Pavlosková ,Microsoft Student Partner ČVUT. Powershell. Přednáška bude pojata více prakticky na množství užitečných příkladů jak pracovat na windows nově a lépe s PS bez proklikávání ! Přístup do aktiv directory ,jak zajisti vzdálený přístup atd …………. Obsah.

dougal
Download Presentation

Powershell

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Silvie Pavlosková,Microsoft Student Partner ČVUT Powershell

  2. Přednáška bude pojata více prakticky na množství užitečných příkladů jak pracovat na windows nově a lépe s PS bez proklikávání! • Přístup do aktiv directory ,jak zajisti vzdálený přístup atd………….

  3. Obsah • 1.předchůdci9.proč tu jsou objekty?inspirace • 2.proč powershell? 10.Formátování inspirace • 3.přípustné výrazy 11.data ze souborů • 4.skripty 12.xml • 5.nápověda 13.objekty-zeštíhlování a select • 6.roura 14.zahazování objektů • 7.roura textová 15.Kolekce v roure:ForEach-Object • 8.objektová

  4. Obsah • 17.error handling 25..Net • 18.error 26. Wrapper-Psbase • 19.ladění 27. Třídy pro administraci • 20.práce s registry 28.Active Directory • 21.přesun složek 29. Př-vypispc a • 22.PSDrive přihlášených uživatelů • 23.změna registu 30. Správa ActiveDirectory • 24.Pomoci .netframeworku pomocí ADsIpraktická uloha -co nám PS nabízí

  5. Obsah • 31.Info pomoci WMI 40.Logování • 32.Akce pomocí WMI 41.Služby a Procesy v PS • 33.COM 42. Správa AD • 34.Aplikace 43.AD-najít uživatele • 35. COM a Office- 44.Disabled účty • přistup do excelu 45.Jak jinak do AD? • 36. Com a PowerPoint 46. Tvorba a aktivace objektů • 37.Com a Firewall 47.sítové konfigurace • 38.Povolení vzdálené plochy • 39.WSH a PS 48.MS exchange

  6. Nástroje kdysi • CMd.exe-externí příkazy • WindowScript Host-objektový přístup -zpřístupnění ADSI • KiXtart(nebudemerozvádět) • Dnes Powershell!s WSH. A WMI Podpora .NET!

  7. Proč používat Právě powershell? • ovládání Windows Longhorn • Serverové aplikace Exchange • Monitorování systému • Windows ManagmentInstrumentation- • Využití potencialu .NET

  8. Co se na nás chystá? • Remoting • WsMAN • v Win2k8 R2 > 570 cmdletů

  9. Co to tedy je? • Freeware • Není součástí Windows • Nové scriptovací prostředí

  10. 129 (ve V2 241) cmdletů pro správu • Ve V2 grafické rozhraní • Tvorba jednoduchých scriptů v jazyce PowerShell • Přístup k wmi/com/.NET • Objektová PIPE • Snadná rozšiřitelnost • Nové cmdlety • Nové providery

  11. Konstrukcejazyka • if;elseif;else • if(podmínka){blok příkazů} • - • eq;ne;gt;ge;lt;le;like;notlike;match;notmatch • switch • switch($pom) Hodnota1{blok } default {blok}

  12. Cykly • while • do while • do until • foreach • for

  13. Přípustné výrazy • Cmdlet-vlastní příkazy powershellu • Funkce • Spustitelný program-ipconfig • Skript \.soubor.ps1 !Set-ExecutionPolicy • Vyhodnotitelný výraz

  14. Cmdlet • Standardizované názvy cmdletů • get-* set-* …

  15. Skripty • \.soubor.ps1 • Bezpečnostní politika !Set-ExecutionPolicy • Alias profile.ps1 • Set –alias kde get-location • Functionted{Get-Date –format g} • Function prompt{ • [System.Enviroment]::UserName+”rika:”} • Cmd.exe powershell c:\Temp\jednoduchy.ps1 • Davkovesoubory –NoLogo,-NoProfile,-Noninteractive

  16. Cmdlet • Interní příkaz • Get-Process –Namesvc*,explo*

  17. napoveda • get-command • Get-Command Get-Service |Format-List • Get-Service|Get-Member • Get-Help about_pipeline

  18. Roura-textová • Textová • Get-Process|more • .\pslist.exe|more • Get-Service|Format-List

  19. Roura Objekotová • !unix versus Powershell • Hlavní rozdíl • Kolekce a instance • Properties jak na ně? • Get-Service|Get-Member • Uchopenivlastnosti: Get-Service|where • ($_.status –eq “running”)

  20. Objekty-Inspirativní PřProč jsou tady s námi objekty? • Get-process|where{$_.id –eq (get-wmiobject win32_service|where{$_.name –eq “KPF4”}).ProcessID}|select –property StarTime • Jakdlouho už běží služba?

  21. Formatování-inspirace • Get-EventLog -LogNamesystem | Format-Table -autosize -property @{Label="Zdroj„ alignment = "left„ width=15 expression= {$_.source}}, @{Label="Udalost:" alignment = "center" width=10 expression= {$_.eventid}}, @{Label="Popis udalosti" alignment = "right„ width=40 expression= {$_.message}} | more

  22. Data ze souborů: • Get-Content C:\Temp\alice01.txt • Cat sou*.txt>>dohromady.txt • !!$obsah=Get-Content dohromady.txt • !!$obsah|Get-Member

  23. XML • Vstup a výstupdat v xml • Get-ChildItem|Select-Object mode,fullname,attributes|Export-Clixml –Path C:\dir.xml Invoke-Item c:\dir.xml $xml=Import-Clixml -Path fakulta.xml $xml|fl

  24. Objekty-Zeštíhlování objektů a select-object • Vybereme to co potřebujeme • Sitova karta: Get-WmiObejct –Class Win32_NetworkAdapterConfiguration| Select-Object macaddress, Description|ft * -AutoSize

  25. ZahazováníoBjektů • Where-Object - FilterScript • Př. Get-EventLog –LogName systém|Where-Object -FilterScript {$_.entrytype –like “war*”}| ft –property eventid,message –autosize $_ ……….objektproudicirourou Vice kriterií and

  26. Kolekce v roure:ForEach-Object • ForEach-Object get-service | select-objectname, status | foreach-object { if ($_.status -eq "running") {write-host $_.name -foregroundcolor "green"} elseif ($_.status -eq "stopped") {write-host $_.name -foregroundcolor "red"} else {write-host $_.name} }

  27. Error Handling • Chybová hlašení oddělení jiným kanálem Get-ChildItem c:\temps 2>c:\dir.txt\ jaká chyba nastala? $chyba=Get-ChildItem c:\temps 2>&1 $chyba|Get-member Chyba.CategoryInfo Chyba.InvocationInfo-provokater

  28. Error • Chyby v objekotvepodobe • Error[0].targetobject-teckova • $LastExitCode • Get-Service atr,dhcp –ErrorActionsilentlycontinue |fl • Parametr suspend-dava uzivatelicas na reakci • stop(default) • Potlačení chyby trap: • Trap{continue}Get-ChildItems;Write-Host “a jedeme dale” • Do textaku:Start-Transcript ……

  29. lADĚNÍ • Jak skript postupuje? • Set-PSDebug-Trace • Uroven 1 a 2

  30. Prace s registry • Dir ,ls • Vypis • Get-ChildrenItem|Get-adresaru:Get-ChildItem –include*.txt,*.log –recurse • Member –MemberType property TypeName:System.IO.FileInfo • Dir|Sort-Object lastacesstime|Format-Table name,lastAcessTime

  31. Presunslozek • $Structure = get-childitem C:\PowerShellScripts\mp3 -recurse | where-object {$_.Mode -match "d"} • foreach ($Element in $structure){ • $MP3Path = $Element.PSPath + "\*.mp3" • if (get-childitem $MP3Path) • { • $Element.PSPath = $element.PSPath -replace "PowerShellScripts", • "Target" • new-item $Element.PsPath -type directory -eaSilentlyContinue • } • }

  32. PSDrive • Mapujeruznedatovestruktury • Get-ChildItem HKLM:\SYSTEM\ • Symulace: • Regedit • Cd “HKML:\SOFTWARE\Microsoft\Command Processor” • (pwd).toString()|Get-ItemProperty

  33. Zmenaregistru: • Cd HKCU:\ • Mkdir _Muj_Klic Hive::Microsoft.Powershell.Core\Registry::HKEY_CURRENT_USER • Cd _Muj_Klic • New-ItemProperty –path. –name “Muj_priznak”-PropertyTypenString –Value “ano”

  34. Pomoci .netframeworkupraktická uloha -co nám PS nabízí • Naposledy přihlášený uživatel? • $vetev=[Microsoft.Win32.RegistryHive]::LocalMachine • $klic=“SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” • $stroj=stroj1 • $cil=[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($vetev,$stroj) • $cil|Get-Member • $cil.GetSubKeyNames() • $cil.OpenSubKey($klic) • $podklic=$cil.OpenSubkey($klic) • $podklic.GetValueNames() • $podklic.name • $podklic.GetValue(“DefaultUserName”)

  35. .Net • Nevytváříme zbytečné cdmlety,vyrobíme instance • $cas=New-Object System.DataTime • $cas.getDate() • [system.console]::set_BackgroundColor(“green”) • [system.console]|Get-Member -static

  36. Wrapper-Psbase • Přístup do ActiveDirectory přes wrapper • Přístup v chráněném režimu • $domena.psbase.get_childern()

  37. Třídy pro administrátory • System.Enviroment • Systém.IO.Path • Io.DriveInfo • Systém.Math • DataTime

  38. ActiveDirectory • Databáze LDAP • Intuitivní přístup díky objektům v PS • Dotaz řetězec ve formátu LDAP-předepsaný formát • New-ObjectSystem.DirectoryServices.DirectoryEntry • Objekt typu: “LDAP://cn=technik1,ou=foundation,dc=foundation,dc=int”

  39. Př-vypispc a naposledy přihlášených uživatelů • $ldapQuery = "(&(objectCategory=computer))" • $de = new-objectsystem.directoryservices.directoryentry • $ads = new-objectsystem.directoryservices.directorysearcher -argumentlist $de,$ldapQuery • $complist = $ads.findall() • $complist | % { • $cn = $_.properties['cn'] • $rk = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$cn) • $rv = $rk.opensubkey("\Software\Microsoft\Windows NT\CurrentVersion\WinLogon") • $lastuser = $rv.GetValue("DefaultDomainName") + "\" + $rv.GetValue("DefaultUserName") • write-host "$cn - $lastuser" • }

  40. Správa ActiveDirectory pomocí ADsI • $AD=[ADSI]”” “” dosazenivychozichhodnot $ou=$ad.psbase.Childern.Find(“OU=Foundation”); • $Novy_uzivatel=$ou.psbase.Childern.Add(“CN=$jmeno_uzivatele”,‘User‘) • Vyslovneuložit jinak localpropertycachce • $Novy_uzivatel.setinfo()!!!!! • PozměníPu • heslo:$Novy_uzivatel.psbase.set_password($pwd) • Zapnout: • $Novy_uzivatel.psbase.InvokeSet(“Accoundisabled”,$false) • Cache $Novy_uzivatel.psbase.refreshcache()

  41. Info pomoci WMI • Cmdletwmiobject plus třídu rozhraní • get-wmiobject Win32_NetworkAdapterConfiguration | Format-Table IPaddress, descr* -AutoSize • Dalsi pr: • get-wmiobject Win32_logicaldisk | Format-Table DeviceID,volumename,{[math]::truncate($_.freespace/1048576)} -AutoSize

  42. Akcepomociwmi • Get-WmiObject -List | Where-Object -FilterScript {$_.Name -eq "Win32_NetworkAdapterConfiguration"} ) .InvokeMethod("RenewDHCPLeaseAll", $null)

  43. COm • Slouží ke komunikaci apliakcí v windows • Objektová podstata • (New-Object -ComObject (Wscript.Network).MapNetworkDrive("U:","\\pocitac\sdilenaslozka")

  44. Aplikace • functionGet-Beat • { • $ie = new-object -com "InternetExplorer.Application" • $ie.Navigate2("http://www.abradio.cz/player.php?kod=44&quality=asx128"); • $ie.width = 400 • $ie.height = 270 • $ie.Top=500 • $ie.Left=0 • $ie.Resizable =$false • $ie.ToolBar =$false • $ie.MenuBar =$false • $ie.Visible = $true; • }

  45. COM a Office-pristup do excelu • $excel=New-Object –comobjectExcel.Application $excel.Visible=$true $sesit=$excel.workbooks.add() $list=$sesit.Worksheet.Item(1) $list.Cells.Item(1,1)=“Nova hodnota v tetobunce” $list.Cells.Item(1,1).Text nova ho

  46. Com a PP • Otevře prezentaci ! • $pp=New-Object –comobjectPowerPoint.Application • $pp.Activate() • $pp.Presentation.Open(“cesta.ppt”)|Out-null • $pp.ActivePresentation.SlideShowSetting.Run()|Out-null

  47. Com a firewall • Zprovozníme firewall bez klikání! • $WFW=New-Object –ComObjectHnetCfg.FwMgr $pravidla=$WFW.LocalPolicy.CurrentProfile $pravidla • Chcemepovolit firewall: $pravidla.FirewallEnabled=$true $pravidla

  48. Povolení vzdálené plochy • Pozor není tak přímočaré! $ICMP=$pravidla.IcmpSettings $ICMP|Get-Member $ICMP.AllowInboundRequest

  49. WSH a Powershell • New-Object -comWScript.Network|Get-Member • Zaslat email: $mail.To $mail.TextBody $mail.Send()

  50. Logování • Přímá práce s logy • Revoluce! Get-EventLog –list |Where-Obejct ($_.logdisplayname –eq “system”) Podle t: Get-EventLog system –Newest 10

More Related