SlideShare a Scribd company logo
1 of 30
Windows PowerShell


              Илья Бреев

                 Синтек
Что это такое?
 Оболочка командной
       строки


   Язык сценариев


 Среда разработки на
основе .NET Framework
Что оно может?
• Всевозможные рутинные операции
• Общие задачи администрирования
• Управление любыми типами хранилищ
  привычными методами
• Управление службами и процессами
• Работа с объектами прямо в командной
  строке
Немного истории…



Monad    1.0                 2.0          3.0
2003     2006               2009          2012




           А теперь обо всем по порядку
Команды и командлеты
        • встроенные в оболочку
        • специальные .NET классы
        • отдельные задачи – отдельные процессы
        • можно создавать собственные
        • … но уже есть ~200 стандартных
        • формат глагол-существительное
        • «Используй объекты, Люк!»


          Get-Command Write-*

          Set-ExecutionPolicy

          Write-Host
Конвейер
                 Get-Item * | Where { $_.PSIsContainer }




или даже так…
                ls | foreach { $_.GetType().FullName}
Функции

function TopBots {
     Write-Host "Top 5 bots:"
     & $parser -stats:OFF -q:ON
"SELECT TOP 5
   SUBSTR(cs(User-Agent), 0, 100) AS user_agent,
   COUNT(*) AS cnt
 FROM $log
 WHERE user_agent LIKE '%bot%' OR
        user_agent LIKE '%spider%'
 GROUP BY user_agent
 ORDER BY cnt DESC"
}
Скрипты
Можно легко передавать параметры, делая их обязательными:

param([string] $parser=$(throw “I need my parser”),
      [string] $log=$(throw “I need my log”)
)

Файлы скриптов *.ps1 интерпретируются вызовом powershell.exe
        … в том числе, из самого powershell

& powershell.exe myscript.ps1
Рутинные задачи
Еще немного рутины…
Я СДЕЛАЮ ЭТО
     на bash
в 2 раза быстрее!
А как насчет…
                    Транзакции
                  (все или ничего)

                   Start-PSTransaction

New-ItemProperty –path HKCU:Test –name Name –value “Test”
                       –useTransaction

       Get-ItemProperty HKCU:Test –useTransaction

                  Complete-PSTransaction
События
   Использование привычной событийной
             модели в скриптах!

$timer = New-Object System.Timers.Timer
$timer.Interval = 3000
$timer.Enabled = true
Register-ObjectEvent $timer “Elapsed”
  -SourceIdentifier “Timer.Elapsed” –Action
{
  Write-Host Elapsed!
  Unregister-PsEvent “Timer.Elapsed”
}
Try-Catch-Finally
$wc = New-Object System.Net.WebClient
$urls = “http://getdev.net”, “http://sintek.biz”
foreach ($url in $urls)
{
  try
  {
      $url
      $result = $wc.DownloadString($url)
  }
  catch [System.Net.WebException]
  {
      $_.Exception.ToString()
  }
}
Отладка скриптов
function Test-Cmdlet
{
  Write-Host “Test!” }
}

Set-PSBreakpoint –command Test-Cmdlet
Test-Cmdlet

А также… Disable-PsBreakpoint, Get-PsBreakpoint,
   Remove-PsBreakpoint, Set-PsDebug, Set-Strictmode,
   Write-Debug, Write-Verbose, Enable-PsBreakpoint,
   Get-PsCallStack
Фоновые задачи
$j = Start-Job -scriptblock { Get-Process }
$result = Receive-Job -Job $j
$result

Продолжаем решать насущные задачи в том же сеансе, сбросив что-то
  тяжелое в фон

Get-Job    - можем быстро посмотреть список фоновых задач

Receive-Job –Id 1 – или посмотреть результаты по Id задачи
Собственная ISE
Integrated Scripting Environment
Общий вид               Возможности



                •   Подсветка синтаксиса
                •   Отладка
                •   Консоль
                •   Несколько лэйаутов
                •   Удаленный Shell
И это всё Powershell 2.0…

       А как же 3.0?
3.0
•   Улучшение синтаксиса
•   2000+ стандартных командлетов
•   Запланированные задания
•   Вечноживые сессии
•   Работа через веб
•   Делегирование
Как упростился синтаксис?
                Стало
   Get-Process | Where PM –gt 100MB
      Get-Process | Foreach Name
                 Было
Get-Process | Where { $_.PM –gt 100MB }
   Get-Process | Foreach { $_.Name }
Работа с планировщиком!
$trigger = New-JobTrigger –Daily –At 3am
Register-ScheduledJob –Name MyJob –Trigger $trigger
  –ScriptBlock
{
…
}
Покажите мне что-нибудь
       вкусное!
Это все было как-то неинтересно
Обычный Out-GridView
А кнопки Ok и Cancel предназначены для перенаправления
отфильтрованной таблицы дальше по пайпу!
Нет, правда. Удивите меня!

  Демонстрация экзотического
     скрипта на Powershell
Выглядит красиво
А как мне пользоваться моим скриптом?
Раньше исполнять скрипт было просто:

$ cat > script.sh << “EOF”
#!/bin/bash
echo Hello from my script
EOF
$ cmhod u+x script.sh
$ ./script.sh
А теперь?
Достаточно вызвать

> powershell.exe script.ps1


• На целевой для скрипта машине должна быть выставлена
  соответствующая политика исполнения скриптов
• При определенных условиях скрипт должен обладать
  цифровой подписью и издатель сертификата должен
  находиться в списке доверенных
Политики исполнения
> Get-ExecutionPolicy
> Set-ExecutionPolicy

• Restricted - политика по умолчанию – нельзя выполнять
  скрипты
• AllSigned – все скрипты должны быть подписаны
• RemoteSigned – скрипты, загруженные из сети, должны быть
  подписаны
• Unrestricted – можно выполнять любые скрипты
• Bypass - Ничего не блокируется, и никакие предупреждения и
  запросы не появляются
• Undefined - если политика выполнения во всех областях имеет
  значение Undefined, действует политика выполнения
  Restricted.
Alternate Data Streams
• Метаданные, связанные с объектом
  файловой системы NTFS
• Используются AES (Attachment Execution
  Service) для сохранения данных об
  источнике загруженного файла
Полезные ссылки
• http://technet.microsoft.com/ru-ru/library/bb978526.aspx
  Windows Powershell на Technet
• http://blogs.msdn.com/b/powershell/ Блог разработчиков
  Powershell
• http://alexwhite.ru/wp-content/uploads/2011/06/posh.pdf
  Книга «Эффективное программирование в Windows
  Powershell»
• http://habrahabr.ru/post/137884/ Пост о подписывании
  скриптов для Powershell
• https://github.com/ilyabreev/ps-script-signing-sublime2
  Репозиторий плагина к Sublime Text 2 для подписывания
  скриптов
Спасибо за внимание!



              Илья Бреев, Синтек
• Email:     ilyabreev@gmail.com
• Twitter:   @ilyabreev
• Github:    https://github.com/ilyabreev

More Related Content

What's hot

Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Yandex
 
Григорий Липин: Автоматизация нагрузочного тестирования
Григорий Липин: Автоматизация нагрузочного тестированияГригорий Липин: Автоматизация нагрузочного тестирования
Григорий Липин: Автоматизация нагрузочного тестированияYandex
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumSQALab
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиBusiness incubator HSE
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptSmartTools
 
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)Ontico
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис РечкуновJSib
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton TsitouFwdays
 
nginx internals
nginx internalsnginx internals
nginx internalsredivy
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPavel Vlasov
 
ZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework ApplicationsZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework ApplicationsZFConf Conference
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис РечкуновDevDay
 
Нейронные сети на JS
Нейронные сети на JSНейронные сети на JS
Нейронные сети на JSVsevolod Rodionov
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервераRoman Brovko
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
 

What's hot (20)

Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"Олесь Писаренко "Открываем Яндекс.Танк"
Олесь Писаренко "Открываем Яндекс.Танк"
 
Григорий Липин: Автоматизация нагрузочного тестирования
Григорий Липин: Автоматизация нагрузочного тестированияГригорий Липин: Автоматизация нагрузочного тестирования
Григорий Липин: Автоматизация нагрузочного тестирования
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и Selenium
 
HSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработкиHSE{Consult}: DevOps – новая методология разработки
HSE{Consult}: DevOps – новая методология разработки
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
 
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)
JavaScript на сервере, 1ms на трансформацию (Андрей Сумин)
 
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов#2 "Распространённые ошибки в JavaScript" Денис Речкунов
#2 "Распространённые ошибки в JavaScript" Денис Речкунов
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
 
nginx internals
nginx internalsnginx internals
nginx internals
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
ZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework ApplicationsZFConf 2010: Performance of Zend Framework Applications
ZFConf 2010: Performance of Zend Framework Applications
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
 
Нейронные сети на JS
Нейронные сети на JSНейронные сети на JS
Нейронные сети на JS
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 

Viewers also liked

Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Silverlight for Windows Phone 7
Silverlight for Windows Phone 7Silverlight for Windows Phone 7
Silverlight for Windows Phone 7GetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Dependency injection
Dependency injectionDependency injection
Dependency injectionGetDev.NET
 
Windows communication foundation 4
Windows communication foundation 4Windows communication foundation 4
Windows communication foundation 4GetDev.NET
 
Workflow Foundation
Workflow FoundationWorkflow Foundation
Workflow FoundationGetDev.NET
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIAGetDev.NET
 
Introduction to Azure AppFabric
Introduction to Azure AppFabricIntroduction to Azure AppFabric
Introduction to Azure AppFabricGetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 
NoSQL databases and CouchDB
NoSQL databases and CouchDBNoSQL databases and CouchDB
NoSQL databases and CouchDBGetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Microsoft NUI - Kinect
Microsoft NUI - KinectMicrosoft NUI - Kinect
Microsoft NUI - KinectGetDev.NET
 
Первое знакомство с MODx revolution
Первое знакомство с MODx revolutionПервое знакомство с MODx revolution
Первое знакомство с MODx revolutionGetDev.NET
 

Viewers also liked (20)

ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Mercurial
MercurialMercurial
Mercurial
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Silverlight for Windows Phone 7
Silverlight for Windows Phone 7Silverlight for Windows Phone 7
Silverlight for Windows Phone 7
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
Windows communication foundation 4
Windows communication foundation 4Windows communication foundation 4
Windows communication foundation 4
 
Workflow Foundation
Workflow FoundationWorkflow Foundation
Workflow Foundation
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIA
 
Introduction to Azure AppFabric
Introduction to Azure AppFabricIntroduction to Azure AppFabric
Introduction to Azure AppFabric
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущее
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 
NoSQL databases and CouchDB
NoSQL databases and CouchDBNoSQL databases and CouchDB
NoSQL databases and CouchDB
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
AngularJS
AngularJSAngularJS
AngularJS
 
Microsoft NUI - Kinect
Microsoft NUI - KinectMicrosoft NUI - Kinect
Microsoft NUI - Kinect
 
Первое знакомство с MODx revolution
Первое знакомство с MODx revolutionПервое знакомство с MODx revolution
Первое знакомство с MODx revolution
 

Similar to PowerShell

Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bashkuchinskaya
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Javaaragozin
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9Technopark
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)Alexander Gornik
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDaysdavertmik
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS Pavel Tsukanov
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageAlexander Granin
 
Haskell
HaskellHaskell
HaskellDevDay
 

Similar to PowerShell (20)

Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
 
бегун
бегунбегун
бегун
 
бегун
бегунбегун
бегун
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Java
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
 
Codeception Introduction
Codeception IntroductionCodeception Introduction
Codeception Introduction
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDays
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
Haskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell languageHaskell Lite - presentation for DevDay about Haskell language
Haskell Lite - presentation for DevDay about Haskell language
 
Haskell
HaskellHaskell
Haskell
 

More from GetDev.NET

Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революцияGetDev.NET
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
Обзор рекомендаций W3C
Обзор рекомендаций W3CОбзор рекомендаций W3C
Обзор рекомендаций W3CGetDev.NET
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive ExtensionsGetDev.NET
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Microsoft NUI - Surface
Microsoft NUI - SurfaceMicrosoft NUI - Surface
Microsoft NUI - SurfaceGetDev.NET
 

More from GetDev.NET (20)

Go
GoGo
Go
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Обзор рекомендаций W3C
Обзор рекомендаций W3CОбзор рекомендаций W3C
Обзор рекомендаций W3C
 
WinRT
WinRTWinRT
WinRT
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Microsoft NUI - Surface
Microsoft NUI - SurfaceMicrosoft NUI - Surface
Microsoft NUI - Surface
 

PowerShell

  • 1. Windows PowerShell Илья Бреев Синтек
  • 2. Что это такое? Оболочка командной строки Язык сценариев Среда разработки на основе .NET Framework
  • 3. Что оно может? • Всевозможные рутинные операции • Общие задачи администрирования • Управление любыми типами хранилищ привычными методами • Управление службами и процессами • Работа с объектами прямо в командной строке
  • 4. Немного истории… Monad 1.0 2.0 3.0 2003 2006 2009 2012 А теперь обо всем по порядку
  • 5. Команды и командлеты • встроенные в оболочку • специальные .NET классы • отдельные задачи – отдельные процессы • можно создавать собственные • … но уже есть ~200 стандартных • формат глагол-существительное • «Используй объекты, Люк!» Get-Command Write-* Set-ExecutionPolicy Write-Host
  • 6. Конвейер Get-Item * | Where { $_.PSIsContainer } или даже так… ls | foreach { $_.GetType().FullName}
  • 7. Функции function TopBots { Write-Host "Top 5 bots:" & $parser -stats:OFF -q:ON "SELECT TOP 5 SUBSTR(cs(User-Agent), 0, 100) AS user_agent, COUNT(*) AS cnt FROM $log WHERE user_agent LIKE '%bot%' OR user_agent LIKE '%spider%' GROUP BY user_agent ORDER BY cnt DESC" }
  • 8. Скрипты Можно легко передавать параметры, делая их обязательными: param([string] $parser=$(throw “I need my parser”), [string] $log=$(throw “I need my log”) ) Файлы скриптов *.ps1 интерпретируются вызовом powershell.exe … в том числе, из самого powershell & powershell.exe myscript.ps1
  • 11. Я СДЕЛАЮ ЭТО на bash в 2 раза быстрее!
  • 12. А как насчет… Транзакции (все или ничего) Start-PSTransaction New-ItemProperty –path HKCU:Test –name Name –value “Test” –useTransaction Get-ItemProperty HKCU:Test –useTransaction Complete-PSTransaction
  • 13. События Использование привычной событийной модели в скриптах! $timer = New-Object System.Timers.Timer $timer.Interval = 3000 $timer.Enabled = true Register-ObjectEvent $timer “Elapsed” -SourceIdentifier “Timer.Elapsed” –Action { Write-Host Elapsed! Unregister-PsEvent “Timer.Elapsed” }
  • 14. Try-Catch-Finally $wc = New-Object System.Net.WebClient $urls = “http://getdev.net”, “http://sintek.biz” foreach ($url in $urls) { try { $url $result = $wc.DownloadString($url) } catch [System.Net.WebException] { $_.Exception.ToString() } }
  • 15. Отладка скриптов function Test-Cmdlet { Write-Host “Test!” } } Set-PSBreakpoint –command Test-Cmdlet Test-Cmdlet А также… Disable-PsBreakpoint, Get-PsBreakpoint, Remove-PsBreakpoint, Set-PsDebug, Set-Strictmode, Write-Debug, Write-Verbose, Enable-PsBreakpoint, Get-PsCallStack
  • 16. Фоновые задачи $j = Start-Job -scriptblock { Get-Process } $result = Receive-Job -Job $j $result Продолжаем решать насущные задачи в том же сеансе, сбросив что-то тяжелое в фон Get-Job - можем быстро посмотреть список фоновых задач Receive-Job –Id 1 – или посмотреть результаты по Id задачи
  • 17. Собственная ISE Integrated Scripting Environment Общий вид Возможности • Подсветка синтаксиса • Отладка • Консоль • Несколько лэйаутов • Удаленный Shell
  • 18. И это всё Powershell 2.0… А как же 3.0?
  • 19. 3.0 • Улучшение синтаксиса • 2000+ стандартных командлетов • Запланированные задания • Вечноживые сессии • Работа через веб • Делегирование
  • 20. Как упростился синтаксис? Стало Get-Process | Where PM –gt 100MB Get-Process | Foreach Name Было Get-Process | Where { $_.PM –gt 100MB } Get-Process | Foreach { $_.Name }
  • 21. Работа с планировщиком! $trigger = New-JobTrigger –Daily –At 3am Register-ScheduledJob –Name MyJob –Trigger $trigger –ScriptBlock { … }
  • 22. Покажите мне что-нибудь вкусное! Это все было как-то неинтересно
  • 23. Обычный Out-GridView А кнопки Ok и Cancel предназначены для перенаправления отфильтрованной таблицы дальше по пайпу!
  • 24. Нет, правда. Удивите меня! Демонстрация экзотического скрипта на Powershell
  • 25. Выглядит красиво А как мне пользоваться моим скриптом? Раньше исполнять скрипт было просто: $ cat > script.sh << “EOF” #!/bin/bash echo Hello from my script EOF $ cmhod u+x script.sh $ ./script.sh
  • 26. А теперь? Достаточно вызвать > powershell.exe script.ps1 • На целевой для скрипта машине должна быть выставлена соответствующая политика исполнения скриптов • При определенных условиях скрипт должен обладать цифровой подписью и издатель сертификата должен находиться в списке доверенных
  • 27. Политики исполнения > Get-ExecutionPolicy > Set-ExecutionPolicy • Restricted - политика по умолчанию – нельзя выполнять скрипты • AllSigned – все скрипты должны быть подписаны • RemoteSigned – скрипты, загруженные из сети, должны быть подписаны • Unrestricted – можно выполнять любые скрипты • Bypass - Ничего не блокируется, и никакие предупреждения и запросы не появляются • Undefined - если политика выполнения во всех областях имеет значение Undefined, действует политика выполнения Restricted.
  • 28. Alternate Data Streams • Метаданные, связанные с объектом файловой системы NTFS • Используются AES (Attachment Execution Service) для сохранения данных об источнике загруженного файла
  • 29. Полезные ссылки • http://technet.microsoft.com/ru-ru/library/bb978526.aspx Windows Powershell на Technet • http://blogs.msdn.com/b/powershell/ Блог разработчиков Powershell • http://alexwhite.ru/wp-content/uploads/2011/06/posh.pdf Книга «Эффективное программирование в Windows Powershell» • http://habrahabr.ru/post/137884/ Пост о подписывании скриптов для Powershell • https://github.com/ilyabreev/ps-script-signing-sublime2 Репозиторий плагина к Sublime Text 2 для подписывания скриптов
  • 30. Спасибо за внимание! Илья Бреев, Синтек • Email: ilyabreev@gmail.com • Twitter: @ilyabreev • Github: https://github.com/ilyabreev