PowerShell
Upcoming SlideShare
Loading in...5
×
 

PowerShell

on

  • 1,203 views

Материалы со встречи: http://getdev.net/Event/powershell

Материалы со встречи: http://getdev.net/Event/powershell

Statistics

Views

Total Views
1,203
Views on SlideShare
1,090
Embed Views
113

Actions

Likes
0
Downloads
9
Comments
0

2 Embeds 113

http://getdev.net 109
http://www.getdev.net 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PowerShell PowerShell Presentation Transcript

    • Windows PowerShell Илья Бреев Синтек
    • Что это такое? Оболочка командной строки Язык сценариев Среда разработки наоснове .NET Framework
    • Что оно может?• Всевозможные рутинные операции• Общие задачи администрирования• Управление любыми типами хранилищ привычными методами• Управление службами и процессами• Работа с объектами прямо в командной строке
    • Немного истории…Monad 1.0 2.0 3.02003 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-PSTransactionNew-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 = trueRegister-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-CmdletTest-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 задачи
    • Собственная ISEIntegrated 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 3amRegister-ScheduledJob –Name MyJob –Trigger $trigger –ScriptBlock{…}
    • Покажите мне что-нибудь вкусное!Это все было как-то неинтересно
    • Обычный Out-GridViewА кнопки Ok и Cancel предназначены для перенаправленияотфильтрованной таблицы дальше по пайпу!
    • Нет, правда. Удивите меня! Демонстрация экзотического скрипта на Powershell
    • Выглядит красивоА как мне пользоваться моим скриптом?Раньше исполнять скрипт было просто:$ cat > script.sh << “EOF”#!/bin/bashecho Hello from my scriptEOF$ 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