microsoft techdays Дмитрий Сотников powershell mvp quest software

Post on 22-Dec-2015

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Microsoft TechDayshttp://www.techdays.ru

Разгоняем PowerShell

Дмитрий СотниковPowerShell MVPQuest Software

Microsoft TechDayshttp://www.techdays.ru

Что будем разгонять

1. Запуск PowerShell’a2. Получение объектов3. ForEach против ForEach4. Работу с большими файлами5. Работу с массивами

Microsoft TechDayshttp://www.techdays.ru

1. Запуск PowShell'a

На всех машинах с PowerShell v1: Запустить Update-GAC.ps1

Microsoft TechDayshttp://www.techdays.ru

Как будем замерять?

Microsoft TechDayshttp://www.techdays.ru

2. Получение объектов

Не доставайте ненужные объектыПараметры – хорошоWhere – плохо

Microsoft TechDayshttp://www.techdays.ru

Where – фильтруем «руками»

Get-Ball | where { $_.color -eq ‘Orange’ }

Microsoft TechDayshttp://www.techdays.ru

Параметры кмдлета

Get-Ball -Сolor ‘Orange’

Примеры

Get-QADUser | Where { $_.Enabled –and

$_.City -eq “Уфа”}

Get-QADUser -Enabled -City “Уфа”

3. foreach или ForEach-Objectforeach ($i in выражение) { $i }

выражение | ForEach-Object { $_ }

3. foreach или ForEach-Objectforeach ($i in выражение) { $i }

выражение | ForEach-Object { $i }

1. Вычисляет выражение2. Загружает его целиком в память3. Выполняет скриптблок для

элементов

3. foreach или ForEach-Objectforeach ($i in выражение) { $i }

выражение | ForEach-Object { $_ }

1. Передает объекты по одному2. Для каждого выполняет

скриптблок

Правильные примеры

foreach($i in $bigcollection) { $sum += $i.property }

Get-QADUser –Enabled | ForEach-Object { $count++ }

4. Чтение больших файлов

Get-Content big.log

Устанавливает буфер чтения (см. статью)

–Read 1000

На 75 MB:

gc test.txt |  Where {$_ -like '*a*'} | Measure-Object

gc test.txt -read 1000 | ForEach-Object {$_} |  Where {$_ -like '*a*'} | Measure-Object

В 3 раза быстрее!

Если нужен только текст...

select-string a.log -pattern $regex

16 секунд

Или Microsoft LogParser

egrep $regex a.log

0.2 секунды

Microsoft TechDayshttp://www.techdays.ru

5. Массивы и строки

Массивы и строки динамическиеПри расширении они пересоздаются

Удобно или быстро

$arr = @()for ($i=0;$i –lt 10000; $i++) {$arr += $i*5}

$arr = new-object int[] 10000for ($i=0;$i –lt 10000; $i++) {$arr[$i] = $i*5}

В 15 раз быстрее

Microsoft TechDayshttp://www.techdays.ru

Мы разогнали

1. Запуск PowerShell’a2. Получение объектов3. ForEach против ForEach4. Работу с большими файлами5. Работу с массивами

Microsoft TechDayshttp://www.techdays.ru

Ссылки по теме

Мои блоги:http://dmitrysotnikov.wordpress.comhttp://www.itcommunity.ru/blogs/dmitrysotnikov

Другие русские блоги по PowerShell:http://xaegr.wordpress.com/http://www.sysadmins.lv/ http://blogs.technet.com/abeshkov/

Инструментарий:http://powergui.org

Microsoft TechDayshttp://www.techdays.ru

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

top related