22

Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software
Page 2: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

Разгоняем PowerShell

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

Page 3: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

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

Page 4: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

1. Запуск PowShell'a

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

Page 5: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

Page 6: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

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

Page 7: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

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

Page 8: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

Get-Ball -Сolor ‘Orange’

Page 9: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Примеры

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

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

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

Page 10: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

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

Page 11: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

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

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

элементов

Page 12: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

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

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

скриптблок

Page 13: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

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

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

Page 14: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

Get-Content big.log

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

–Read 1000

Page 15: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

На 75 MB:

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

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

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

Page 16: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

select-string a.log -pattern $regex

16 секунд

Или Microsoft LogParser

egrep $regex a.log

0.2 секунды

Page 17: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

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

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

Page 18: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

$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 раз быстрее

Page 19: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

Microsoft TechDayshttp://www.techdays.ru

Мы разогнали

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

Page 20: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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

Page 21: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software

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.

Page 22: Microsoft TechDays Дмитрий Сотников PowerShell MVP Quest Software