SlideShare a Scribd company logo
1 of 39
PowerShell – швейцарский нож для
          тестировщика

            Игорь Любин
О себе




$speaker = “Игорь Любин”
$degree = “К. ф.-м. н.”
$education = “КГУ”

$city = “Москва”
$work = “Undev.ru”
$SQAdays = 3, 5, 8, 9

$testingExperience = 4 # года
$powershellExperience = 2 # года




                                            2
Синее окошечко




Get-Host
Name               :   ConsoleHost
Version            :   2.0
InstanceId         :   67c14f3c-2df0-46a0-aa8a-bed1a616a1ef
UI                 :   InternalHostUserInterface
CurrentCulture     :   ru-RU
CurrentUICulture   :   en-US
PrivateData        :   Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed   :   False
Runspace           :   System.Management.Automation.Runspaces.LocalRunspace




                                                                              3
Для чего нам PowerShell?




Get-Task
>   Собирать логи, копировать файлы
>   Запускать/останавливать программы и службы
>   Выполнять скрипты на удаленной машине
>   Проверить почту и вытащить нужную информацию из письма
>   Управлять виртуальными машинами VmWare
>   Устанавливать дополнительные пакеты в VS2010




                                                             4
Как приступить к работе?




          http://support.microsoft.com/kb/968929


                                                   5
Пустое синее окошечко




                        6
Как узнать команды?




Get-Command




                                    7
Как узнать команды?




Get-Command –Verb Set
CommandType   Name
-----------   ----
Cmdlet        Set-Acl
Cmdlet        Set-Alias
Cmdlet        Set-AuthenticodeSignature
Cmdlet        Set-Content
Cmdlet        Set-Date
Cmdlet        Set-ExecutionPolicy
Cmdlet        Set-Item
Cmdlet        Set-ItemProperty
Cmdlet        Set-Location
Cmdlet        Set-PSBreakpoint
Cmdlet        Set-PSDebug
...



                                                       8
Командлеты




<Verb>-<Noun>




                             9
Примеры командлетов




Get-Process   #   Получить список процессов
Remove-Item   #   Удалить что-то
Get-Help      #   Получить справку
Set-Alias     #   Создать новый алиас
New-Item      #   Создать новый объект/файл




                                              10
Выполнение команд




Get-ChildItem




                                    11
Выполнение команд




Get-ChildItem
   Каталог: D:

Mode              LastWriteTime      Length Name
----              -------------      ------ ----
d----      06.09.2011      0:33             books
d----      27.08.2011      1:09             distr
d-r--      11.10.2011      0:14             documents
d-r--      10.10.2011     14:45             downloads
d-r--      10.10.2011     19:42             Dropbox
d----      15.06.2011     20:49             games
d-r--      03.08.2011     20:00             music
d----      15.06.2011     22:48             pictures
d----      29.09.2011      1:27             svn
d-r--      19.09.2011      5:11             video



                                                        12
Алиасы




Get-ChildItem
dir
ls




                         13
Алиасы




Get-Alias
CommandType   Name    Definition
-----------   ----    ----------
Alias         cat     Get-Content
Alias         cd      Set-Location
Alias         clear   Clear-Host
Alias         cp      Copy-Item
Alias         diff    Compare-Object
Alias         echo    Write-Output
Alias         mv      Move-Item
Alias         ps      Get-Process
Alias         pwd     Get-Location
Alias         rm      Remove-Item
...

                                       14
Справка




Get-Help
help
man




                     15
Справка




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
Справка




Get-Help New-Item –Examples
-------------------------- ПРИМЕР 1 --------------------------

new-item -path . -name testfile1.txt -type "file" -value "This is a text
string."

-------------------------- ПРИМЕР 2 --------------------------

new-item -path c: -name logfiles -type directory

-------------------------- ПРИМЕР 3 --------------------------

new-item -path $profile -type file -force



                                                                       17
Справка




Get-Help var
Name                          Category
----                          --------
Get-Variable                  Cmdlet
New-Variable                  Cmdlet
Set-Variable                  Cmdlet
Remove-Variable               Cmdlet
Clear-Variable                Cmdlet
Variable                      Provider
about_Automatic_Variables     HelpFile
about_environment_variables   HelpFile
about_preference_variables    HelpFile
about_Variables               HelpFile


                                             18
Конвейер




Get-ChildItem "*.txt" | Get-Content
<Содержимое текстового файла 1>
<Содержимое текстового файла 2>
...




                                             19
Примеры использования конвейра




Get-Help Registry | Set-Content reg.txt

<В файл reg.txt сохраняется справка по реестру>




                                                               20
Примеры использования конвейра




Get-Childitem | `
    Measure-Object -Property Length –Sum

<Выводится суммарный размер всех файлов в папке>




                                                               21
Объекты




“string” | Get-Member
TypeName: System.String

Name            MemberType
----            ----------
GetType         Method
Split           Method
Substring       Method
ToLower         Method
ToUpper         Method
Length          Property
...




                                       22
Переменные




# Нетипизированные
$processList = Get-Process

# Типизированные
[DateTime]$date = "02/14/11"




                                  23
Объекты .Net




$wget = New-Object System.Net.WebClient
$wget.DownloadString("http://google.com")
<Выводится HTML страница google.com>




                                                      24
Объекты .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
Домашнее задание




# Самостоятельно 

Get-PSDrive
Where-Object
Foreach-Object




                                        26
Копирование файлов




Copy-Item $fromFile -Destination $toFile




                                           27
Копирование файлов




$wget = New-Object System.Net.WebClient

$wget.Credentials = `
    [System.Net.CredentialCache]::DefaultNetworkCredentials

$wget.DownloadFile($fromFile, $toFile)




                                                              28
Работа со службами




Get-Service
Start-Service $service
Stop-Service $service




                                         29
Отправка почты




Send-MailMessage `
  -To "user01@example.com" `
  -From "user02@example.com" `
  -Subject "Mail from Powershell" `
  -Body "Hello"




                                      30
Работа с почтой




$outlook = New-Object -ComObject outlook.application

$inboxFolder = `
    $outlook.GetNamespace("MAPI").getdefaultfolder("olFolderInbox")

$lastMessage = $inboxFolder.Items | Sort-Object ReceivedTime | `
    Select-Object -Last 1

Write-Host $lastMessage.Body




                                                                      31
Виртуальные машины VmWare




#   http://blogs.vmware.com/vipowershell/2008/04/manage-vmware-w.html

Add-PSSnapin VMware.VimAutomation.Core
Connect-VIServer $serverName -Protocol https -Port 8333
$vm = Get-VM -Name $vmName
if ($vm.PowerState -eq "PoweredOn")
{
    Stop-VM $Server
}
$snapshot = Get-Snapshot -VM $vm -Name $snapshotName
Set-VM $Server -Snapshot $snapshot
Start-VM $Server
Disconnect-VIServer
Remove-PSSnapin VMware.VimAutomation.Core




                                                                        32
Отправка почты




Invoke-Command `
  -filepath c:scriptstest.ps1 `
  -computerName $remoteComputer




                                      33
Автоматизация с WASP




#   http://wasp.codeplex.com/

Import-Module "D:downloadsWASPWASP.dll"
D:downloadsWASPnpp.5.8.Installer.exe
$w = "Installer*"
Select-Window $w | Set-WindowActive
Select-Window $w | Select-Control "OK" | Send-Click
$w = "*Notepad*"
Select-Window $w | Select-Control "&Далее >" | Send-Click
Select-Window $w | Select-Control "Принима&ю" | Send-Click
Select-Window $w | Select-Control "&Далее >" | Send-Click
Select-Window $w | Select-Control "Установить" | Send-Click




                                                              34
NuGet в VS2010




Get-Package –ListAvailable Selenium
Id                               Version
--                               -------
Selenium.RC                      2.8.0
Selenium.Support                 2.8.0
Selenium.WebDriver               2.8.0
Selenium.WebDriverBackedSel...   2.8.0
...




                                                      35
NuGet в VS2010




Install-Package Selenium.WebDriver
Attempting 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
Пример подсветки кода




# 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
Итоги




Get-Results
>   Получили информацию о первичных понятиях PowerShell
     >   Командлеты
     >   Алиасы
     >   Конвейер
>   Узнали важные команды
     >   Get-Command
     >   Get-Help
     >   Get-Member
>   Разобрали решение практических задач
     >   Собирать логи, копировать файлы
     >   Запускать/останавливать программы и службы
     >   Выполнять скрипты на удаленной машине
     >   Проверить почту и вытащить нужную информацию из письма
     >   Управлять виртуальными машинами VmWare
     >   Устанавливать дополнительные пакеты в VS2010



                                                                  38
Конец




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

More Related Content

What's hot

"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиГлеб Тарасов
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
Михаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьМихаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьYandex
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview ReleaseDenis Shestakov
 
RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: PromisesRAMBLER&Co
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Ilyas Salikhov
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?Ivan Tsyganov
 
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»Yandex
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
Решаем 9 задач управления Windows Server 2008 с помощью PowerShell
Решаем 9 задач управления Windows Server 2008 с помощью PowerShellРешаем 9 задач управления Windows Server 2008 с помощью PowerShell
Решаем 9 задач управления Windows Server 2008 с помощью PowerShellAndrey Markin
 
Полное руководство по аудиту доменных служб Active Directory в Windows Server...
Полное руководство по аудиту доменных служб Active Directory в Windows Server...Полное руководство по аудиту доменных служб Active Directory в Windows Server...
Полное руководство по аудиту доменных служб Active Directory в Windows Server...Netwrix Россия/СНГ
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхAnastasia Lubennikova
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедевkuchinskaya
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Yandex
 
Руководство по управлению службами WIindows с помощью PowerShell
Руководство по управлению службами WIindows с помощью PowerShellРуководство по управлению службами WIindows с помощью PowerShell
Руководство по управлению службами WIindows с помощью PowerShellAndrey Markin
 

What's hot (20)

"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с даннымиИнтуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
Михаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьМихаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: Асинхронность
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Avito / SPA Meetup 2
Avito / SPA Meetup 2Avito / SPA Meetup 2
Avito / SPA Meetup 2
 
RDSDataSource: Promises
RDSDataSource: PromisesRDSDataSource: Promises
RDSDataSource: Promises
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?
 
Gradle
GradleGradle
Gradle
 
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
Agile Instrumentation
Agile InstrumentationAgile Instrumentation
Agile Instrumentation
 
Решаем 9 задач управления Windows Server 2008 с помощью PowerShell
Решаем 9 задач управления Windows Server 2008 с помощью PowerShellРешаем 9 задач управления Windows Server 2008 с помощью PowerShell
Решаем 9 задач управления Windows Server 2008 с помощью PowerShell
 
Полное руководство по аудиту доменных служб Active Directory в Windows Server...
Полное руководство по аудиту доменных служб Active Directory в Windows Server...Полное руководство по аудиту доменных служб Active Directory в Windows Server...
Полное руководство по аудиту доменных служб Active Directory в Windows Server...
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данных
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
 
Руководство по управлению службами WIindows с помощью PowerShell
Руководство по управлению службами WIindows с помощью PowerShellРуководство по управлению службами WIindows с помощью PowerShell
Руководство по управлению службами WIindows с помощью PowerShell
 

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

Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...sqadays8
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...PavelKonotopov
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiMichael Chernobrov
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 
Автотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и RspecАвтотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и RspecSQALab
 
Игорь Любин - Автотестирование веб-сервиса с Ruby и Rspec
Игорь Любин - Автотестирование веб-сервиса с Ruby и RspecИгорь Любин - Автотестирование веб-сервиса с Ruby и Rspec
Игорь Любин - Автотестирование веб-сервиса с Ruby и Rspecilyubin
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровPositive Hack Days
 

Similar to Игорь Любин - PowerShell - ConfeT&QA 2011 (20)

PowerShell
PowerShellPowerShell
PowerShell
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
 
бегун
бегунбегун
бегун
 
бегун
бегунбегун
бегун
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 
Автотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и RspecАвтотестирование веб-сервиса с Ruby и Rspec
Автотестирование веб-сервиса с Ruby и Rspec
 
Игорь Любин - Автотестирование веб-сервиса с Ruby и Rspec
Игорь Любин - Автотестирование веб-сервиса с Ruby и RspecИгорь Любин - Автотестирование веб-сервиса с Ruby и Rspec
Игорь Любин - Автотестирование веб-сервиса с Ruby и Rspec
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоров
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 

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

  • 1. PowerShell – швейцарский нож для тестировщика Игорь Любин
  • 2. О себе $speaker = “Игорь Любин” $degree = “К. ф.-м. н.” $education = “КГУ” $city = “Москва” $work = “Undev.ru” $SQAdays = 3, 5, 8, 9 $testingExperience = 4 # года $powershellExperience = 2 # года 2
  • 3. Синее окошечко Get-Host Name : ConsoleHost Version : 2.0 InstanceId : 67c14f3c-2df0-46a0-aa8a-bed1a616a1ef UI : InternalHostUserInterface CurrentCulture : ru-RU CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace 3
  • 4. Для чего нам PowerShell? Get-Task > Собирать логи, копировать файлы > Запускать/останавливать программы и службы > Выполнять скрипты на удаленной машине > Проверить почту и вытащить нужную информацию из письма > Управлять виртуальными машинами VmWare > Устанавливать дополнительные пакеты в VS2010 4
  • 5. Как приступить к работе? http://support.microsoft.com/kb/968929 5
  • 8. Как узнать команды? Get-Command –Verb Set CommandType Name ----------- ---- Cmdlet Set-Acl Cmdlet Set-Alias Cmdlet Set-AuthenticodeSignature Cmdlet Set-Content Cmdlet Set-Date Cmdlet Set-ExecutionPolicy Cmdlet Set-Item Cmdlet Set-ItemProperty Cmdlet Set-Location Cmdlet Set-PSBreakpoint Cmdlet Set-PSDebug ... 8
  • 10. Примеры командлетов Get-Process # Получить список процессов Remove-Item # Удалить что-то Get-Help # Получить справку Set-Alias # Создать новый алиас New-Item # Создать новый объект/файл 10
  • 12. Выполнение команд Get-ChildItem Каталог: D: Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 06.09.2011 0:33 books d---- 27.08.2011 1:09 distr d-r-- 11.10.2011 0:14 documents d-r-- 10.10.2011 14:45 downloads d-r-- 10.10.2011 19:42 Dropbox d---- 15.06.2011 20:49 games d-r-- 03.08.2011 20:00 music d---- 15.06.2011 22:48 pictures d---- 29.09.2011 1:27 svn d-r-- 19.09.2011 5:11 video 12
  • 14. Алиасы Get-Alias CommandType Name Definition ----------- ---- ---------- Alias cat Get-Content Alias cd Set-Location Alias clear Clear-Host Alias cp Copy-Item Alias diff Compare-Object Alias echo Write-Output Alias mv Move-Item Alias ps Get-Process Alias pwd Get-Location Alias rm Remove-Item ... 14
  • 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. Справка Get-Help New-Item –Examples -------------------------- ПРИМЕР 1 -------------------------- new-item -path . -name testfile1.txt -type "file" -value "This is a text string." -------------------------- ПРИМЕР 2 -------------------------- new-item -path c: -name logfiles -type directory -------------------------- ПРИМЕР 3 -------------------------- new-item -path $profile -type file -force 17
  • 18. Справка Get-Help var Name Category ---- -------- Get-Variable Cmdlet New-Variable Cmdlet Set-Variable Cmdlet Remove-Variable Cmdlet Clear-Variable Cmdlet Variable Provider about_Automatic_Variables HelpFile about_environment_variables HelpFile about_preference_variables HelpFile about_Variables HelpFile 18
  • 19. Конвейер Get-ChildItem "*.txt" | Get-Content <Содержимое текстового файла 1> <Содержимое текстового файла 2> ... 19
  • 20. Примеры использования конвейра Get-Help Registry | Set-Content reg.txt <В файл reg.txt сохраняется справка по реестру> 20
  • 21. Примеры использования конвейра Get-Childitem | ` Measure-Object -Property Length –Sum <Выводится суммарный размер всех файлов в папке> 21
  • 22. Объекты “string” | Get-Member TypeName: System.String Name MemberType ---- ---------- GetType Method Split Method Substring Method ToLower Method ToUpper Method Length Property ... 22
  • 23. Переменные # Нетипизированные $processList = Get-Process # Типизированные [DateTime]$date = "02/14/11" 23
  • 24. Объекты .Net $wget = New-Object System.Net.WebClient $wget.DownloadString("http://google.com") <Выводится HTML страница google.com> 24
  • 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. Домашнее задание # Самостоятельно  Get-PSDrive Where-Object Foreach-Object 26
  • 28. Копирование файлов $wget = New-Object System.Net.WebClient $wget.Credentials = ` [System.Net.CredentialCache]::DefaultNetworkCredentials $wget.DownloadFile($fromFile, $toFile) 28
  • 30. Отправка почты Send-MailMessage ` -To "user01@example.com" ` -From "user02@example.com" ` -Subject "Mail from Powershell" ` -Body "Hello" 30
  • 31. Работа с почтой $outlook = New-Object -ComObject outlook.application $inboxFolder = ` $outlook.GetNamespace("MAPI").getdefaultfolder("olFolderInbox") $lastMessage = $inboxFolder.Items | Sort-Object ReceivedTime | ` Select-Object -Last 1 Write-Host $lastMessage.Body 31
  • 32. Виртуальные машины VmWare # http://blogs.vmware.com/vipowershell/2008/04/manage-vmware-w.html Add-PSSnapin VMware.VimAutomation.Core Connect-VIServer $serverName -Protocol https -Port 8333 $vm = Get-VM -Name $vmName if ($vm.PowerState -eq "PoweredOn") { Stop-VM $Server } $snapshot = Get-Snapshot -VM $vm -Name $snapshotName Set-VM $Server -Snapshot $snapshot Start-VM $Server Disconnect-VIServer Remove-PSSnapin VMware.VimAutomation.Core 32
  • 33. Отправка почты Invoke-Command ` -filepath c:scriptstest.ps1 ` -computerName $remoteComputer 33
  • 34. Автоматизация с WASP # http://wasp.codeplex.com/ Import-Module "D:downloadsWASPWASP.dll" D:downloadsWASPnpp.5.8.Installer.exe $w = "Installer*" Select-Window $w | Set-WindowActive Select-Window $w | Select-Control "OK" | Send-Click $w = "*Notepad*" Select-Window $w | Select-Control "&Далее >" | Send-Click Select-Window $w | Select-Control "Принима&ю" | Send-Click Select-Window $w | Select-Control "&Далее >" | Send-Click Select-Window $w | Select-Control "Установить" | Send-Click 34
  • 35. NuGet в VS2010 Get-Package –ListAvailable Selenium Id Version -- ------- Selenium.RC 2.8.0 Selenium.Support 2.8.0 Selenium.WebDriver 2.8.0 Selenium.WebDriverBackedSel... 2.8.0 ... 35
  • 36. NuGet в VS2010 Install-Package Selenium.WebDriver Attempting 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. Пример подсветки кода # 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. Итоги Get-Results > Получили информацию о первичных понятиях PowerShell > Командлеты > Алиасы > Конвейер > Узнали важные команды > Get-Command > Get-Help > Get-Member > Разобрали решение практических задач > Собирать логи, копировать файлы > Запускать/останавливать программы и службы > Выполнять скрипты на удаленной машине > Проверить почту и вытащить нужную информацию из письма > Управлять виртуальными машинами VmWare > Устанавливать дополнительные пакеты в VS2010 38
  • 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