Игорь Любин - PowerShell - ConfeT&QA 2011

1,051 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,051
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Игорь Любин - PowerShell - ConfeT&QA 2011

  1. 1. PowerShell – швейцарский нож для тестировщика Игорь Любин
  2. 2. О себе$speaker = “Игорь Любин”$degree = “К. ф.-м. н.”$education = “КГУ”$city = “Москва”$work = “Undev.ru”$SQAdays = 3, 5, 8, 9$testingExperience = 4 # года$powershellExperience = 2 # года 2
  3. 3. Синее окошечкоGet-HostName : ConsoleHostVersion : 2.0InstanceId : 67c14f3c-2df0-46a0-aa8a-bed1a616a1efUI : InternalHostUserInterfaceCurrentCulture : ru-RUCurrentUICulture : en-USPrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxyIsRunspacePushed : FalseRunspace : System.Management.Automation.Runspaces.LocalRunspace 3
  4. 4. Для чего нам PowerShell?Get-Task> Собирать логи, копировать файлы> Запускать/останавливать программы и службы> Выполнять скрипты на удаленной машине> Проверить почту и вытащить нужную информацию из письма> Управлять виртуальными машинами VmWare> Устанавливать дополнительные пакеты в VS2010 4
  5. 5. Как приступить к работе? http://support.microsoft.com/kb/968929 5
  6. 6. Пустое синее окошечко 6
  7. 7. Как узнать команды?Get-Command 7
  8. 8. Как узнать команды?Get-Command –Verb SetCommandType Name----------- ----Cmdlet Set-AclCmdlet Set-AliasCmdlet Set-AuthenticodeSignatureCmdlet Set-ContentCmdlet Set-DateCmdlet Set-ExecutionPolicyCmdlet Set-ItemCmdlet Set-ItemPropertyCmdlet Set-LocationCmdlet Set-PSBreakpointCmdlet Set-PSDebug... 8
  9. 9. Командлеты<Verb>-<Noun> 9
  10. 10. Примеры командлетовGet-Process # Получить список процессовRemove-Item # Удалить что-тоGet-Help # Получить справкуSet-Alias # Создать новый алиасNew-Item # Создать новый объект/файл 10
  11. 11. Выполнение командGet-ChildItem 11
  12. 12. Выполнение командGet-ChildItem Каталог: D:Mode LastWriteTime Length Name---- ------------- ------ ----d---- 06.09.2011 0:33 booksd---- 27.08.2011 1:09 distrd-r-- 11.10.2011 0:14 documentsd-r-- 10.10.2011 14:45 downloadsd-r-- 10.10.2011 19:42 Dropboxd---- 15.06.2011 20:49 gamesd-r-- 03.08.2011 20:00 musicd---- 15.06.2011 22:48 picturesd---- 29.09.2011 1:27 svnd-r-- 19.09.2011 5:11 video 12
  13. 13. АлиасыGet-ChildItemdirls 13
  14. 14. АлиасыGet-AliasCommandType Name Definition----------- ---- ----------Alias cat Get-ContentAlias cd Set-LocationAlias clear Clear-HostAlias cp Copy-ItemAlias diff Compare-ObjectAlias echo Write-OutputAlias mv Move-ItemAlias ps Get-ProcessAlias pwd Get-LocationAlias rm Remove-Item... 14
  15. 15. СправкаGet-Helphelpman 15
  16. 16. СправкаGet-Help New-ItemИМЯ New-ItemОПИСАНИЕ Создает новый элемент.СИНТАКСИС New-Item [-Path] <string[]> [-Credential <PSCredential>] [-Force] [-ItemType <string>] [-Value <Object>] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]ОПИСАНИЕ Командлет New-Item создает новый элемент и задает его значение. Типысоздаваемых элементов зависят от местоположения этих элементов.Например, в файловой системе командлет New-Item создает файлы и папки. Вреестре командлет New-Item создает разделы и записи реестра. 16
  17. 17. СправкаGet-Help New-Item –Examples-------------------------- ПРИМЕР 1 --------------------------new-item -path . -name testfile1.txt -type "file" -value "This is a textstring."-------------------------- ПРИМЕР 2 --------------------------new-item -path c: -name logfiles -type directory-------------------------- ПРИМЕР 3 --------------------------new-item -path $profile -type file -force 17
  18. 18. СправкаGet-Help varName Category---- --------Get-Variable CmdletNew-Variable CmdletSet-Variable CmdletRemove-Variable CmdletClear-Variable CmdletVariable Providerabout_Automatic_Variables HelpFileabout_environment_variables HelpFileabout_preference_variables HelpFileabout_Variables HelpFile 18
  19. 19. КонвейерGet-ChildItem "*.txt" | Get-Content<Содержимое текстового файла 1><Содержимое текстового файла 2>... 19
  20. 20. Примеры использования конвейраGet-Help Registry | Set-Content reg.txt<В файл reg.txt сохраняется справка по реестру> 20
  21. 21. Примеры использования конвейраGet-Childitem | ` Measure-Object -Property Length –Sum<Выводится суммарный размер всех файлов в папке> 21
  22. 22. Объекты“string” | Get-MemberTypeName: System.StringName MemberType---- ----------GetType MethodSplit MethodSubstring MethodToLower MethodToUpper MethodLength Property... 22
  23. 23. Переменные# Нетипизированные$processList = Get-Process# Типизированные[DateTime]$date = "02/14/11" 23
  24. 24. Объекты .Net$wget = New-Object System.Net.WebClient$wget.DownloadString("http://google.com")<Выводится HTML страница google.com> 24
  25. 25. Объекты .Net[System.Net.DNS]::resolve("87.250.250.3")HostName AddressList-------- -----------www.yandex.ru {87.250.250.3}http://msdn.microsoft.com/en-us/ 25
  26. 26. Домашнее задание# Самостоятельно Get-PSDriveWhere-ObjectForeach-Object 26
  27. 27. Копирование файловCopy-Item $fromFile -Destination $toFile 27
  28. 28. Копирование файлов$wget = New-Object System.Net.WebClient$wget.Credentials = ` [System.Net.CredentialCache]::DefaultNetworkCredentials$wget.DownloadFile($fromFile, $toFile) 28
  29. 29. Работа со службамиGet-ServiceStart-Service $serviceStop-Service $service 29
  30. 30. Отправка почтыSend-MailMessage ` -To "user01@example.com" ` -From "user02@example.com" ` -Subject "Mail from Powershell" ` -Body "Hello" 30
  31. 31. Работа с почтой$outlook = New-Object -ComObject outlook.application$inboxFolder = ` $outlook.GetNamespace("MAPI").getdefaultfolder("olFolderInbox")$lastMessage = $inboxFolder.Items | Sort-Object ReceivedTime | ` Select-Object -Last 1Write-Host $lastMessage.Body 31
  32. 32. Виртуальные машины VmWare# http://blogs.vmware.com/vipowershell/2008/04/manage-vmware-w.htmlAdd-PSSnapin VMware.VimAutomation.CoreConnect-VIServer $serverName -Protocol https -Port 8333$vm = Get-VM -Name $vmNameif ($vm.PowerState -eq "PoweredOn"){ Stop-VM $Server}$snapshot = Get-Snapshot -VM $vm -Name $snapshotNameSet-VM $Server -Snapshot $snapshotStart-VM $ServerDisconnect-VIServerRemove-PSSnapin VMware.VimAutomation.Core 32
  33. 33. Отправка почтыInvoke-Command ` -filepath c:scriptstest.ps1 ` -computerName $remoteComputer 33
  34. 34. Автоматизация с WASP# http://wasp.codeplex.com/Import-Module "D:downloadsWASPWASP.dll"D:downloadsWASPnpp.5.8.Installer.exe$w = "Installer*"Select-Window $w | Set-WindowActiveSelect-Window $w | Select-Control "OK" | Send-Click$w = "*Notepad*"Select-Window $w | Select-Control "&Далее >" | Send-ClickSelect-Window $w | Select-Control "Принима&ю" | Send-ClickSelect-Window $w | Select-Control "&Далее >" | Send-ClickSelect-Window $w | Select-Control "Установить" | Send-Click 34
  35. 35. NuGet в VS2010Get-Package –ListAvailable SeleniumId Version-- -------Selenium.RC 2.8.0Selenium.Support 2.8.0Selenium.WebDriver 2.8.0Selenium.WebDriverBackedSel... 2.8.0... 35
  36. 36. NuGet в VS2010Install-Package Selenium.WebDriverAttempting to resolve dependency Newtonsoft.Json (= 4.0.2).Attempting to resolve dependency DotNetZip (= 1.9.1.8).Successfully installed Newtonsoft.Json 4.0.2.Successfully installed DotNetZip 1.9.1.8.Successfully installed Selenium.WebDriver 2.8.0.Successfully added Newtonsoft.Json 4.0.2 to Workshop.Successfully added DotNetZip 1.9.1.8 to Workshop.Successfully added Selenium.WebDriver 2.8.0 to Workshop. 36
  37. 37. Пример подсветки кода# http://powergui.org$date = Get-Date -Format "yyyy-MM-dd"$time = Get-Date -Format "HH:mm:ss"# Проверка: есть ли файл для скачивания?if ( Test-Path $fileForDownload ){ mkdir $sourceDir Copy-Item $fileForDownload -Destination $sourceDir} 37
  38. 38. ИтогиGet-Results> Получили информацию о первичных понятиях PowerShell > Командлеты > Алиасы > Конвейер> Узнали важные команды > Get-Command > Get-Help > Get-Member> Разобрали решение практических задач > Собирать логи, копировать файлы > Запускать/останавливать программы и службы > Выполнять скрипты на удаленной машине > Проверить почту и вытащить нужную информацию из письма > Управлять виртуальными машинами VmWare > Устанавливать дополнительные пакеты в VS2010 38
  39. 39. КонецStop-Process POWERPNTСпасибо за внимание! Вопросы?Ссылки: > http://habrahabr.ru/blogs/powershell/113913/ > http://www.techdays.ru/Category.aspx?Tag=PowerShell > http://support.microsoft.com/kb/968929 > http://msdn.microsoft.com/en-us/ > http://powergui.org > http://blogs.vmware.com/vipowershell/2008/04/manage-vmware-w.html > http://wasp.codeplex.com/ > http://nuget.org/ > E-mail: ilyubin@yandex.ru > Skype: igor.lyubin 39

×