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

Post on 05-Jul-2015

807 views 3 download

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

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

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

5

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

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

6

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

Get-Command

7

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

Get-Command –Verb Set

CommandType 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

Командлеты

<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 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

Алиасы

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:\scripts\test.ps1 `

-computerName $remoteComputer

33

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

# http://wasp.codeplex.com/

Import-Module "D:\downloads\WASP\WASP.dll"

D:\downloads\WASP\npp.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