понедельник, 2 июля 2012 г.

PowerShell (chapter 1)

  • Список всех процессов в системе
    get-process
  • Список всех процессов в системе, имена которых начинаются с s
    get-process s*
  • Список всех сервисов
    get-service
  • Список всех сервисов, имена которых начинаются с ms
    get-service ms*
  • Функция автозавершения (нажимая клавишу несколько раз, вы перебираете возможные варианты команд)
    get- + tab
  • Эта команда требует ввода параметров, ответьте на приглашение LogName: и введите Application – будет выведен системный журнал событий Application
    Get-Eventlog


Структура команд
get-process - Глагол-Существительное
  • Список параметров передается через пробел, например:
    Get-childitem c:\ (содержимое корневого каталога)
  • Если параметр содержит пробел, его надо заключать в кавычки:
    Get-childitem “c:\Program Files”
  • Параметры можно передавать по имени или по порядку. В случае передачи по порядку, он должен соответствовать порядку параметров в документации, иначе будет ошибка.
    Например:
    Get-ChildItem C:\mydata *.doc
    Get-ChildItem -Path C:\mydata -Filter *.doc
    Get-ChildItem -Filter *.doc -Path C:\mydata
    Get-ChildItem *.doc C:\mydata  - эта строка даст ошибку
  • Параметр без значения называется свитчем, и по смыслу является функцией:
    Get-ChildItem с:\mydata\docs –recurse


Автозавершение также работает с параметрами.
  • Также при задании параметров поддерживаются стандартные символы заместители (*, ?, интервалы [a-v] и т.п.) , например:
    Get-process ?i*

Псевдонимы (aliases)
get-alias
  • Задание псевдонима
    Set-Alias npd notepad.exe
  • Посмотреть все команды можно с помощью Get-command.
    Например, вывод всех команд, начинающихся с get:
    Get-command get-*
  • Справка выводится по команде Get-help.
    Например, помощь по get-process:
    Get-help get-process или get-process -?
  • Полная справка по команде дается с ключом full
    Get-help get-process –full


Конвейеры
  • Например, вывод только имени и размера doc файлов размером больше 20Кб, отсортированных по размеру, можно выполнить такой командой:
    Get-ChildItem c:\mydata –r -filter *.doc
    | Where-Object { $_.Length -gt 20000 }
    | Select-Object Name, Length
    | Sort-Object Length
    | Format-List
  • Остановить процесс можно так, на примере iexplore:
    Get-Process iexplore | Stop-Process
  • Форматирование вывода осуществляется с помощью следующих команд:
    
    Format-Wide вывод в две колонки
    Format-List детальный список
    Format-Table таблица
    Например:
    Get-process | Format-Wide
    Get-process | Format-List
    Get-process | Format-Table
  • Вывод отдельных полей в таблице можно задать так:
    Get-Process | Format-Table -p id,processname,handles
  • Подавление вывода:
    Get-Process | Out-Null
  • Вывод на принтер
    Get-Process | Out-Printer
  • Вывод на конкретный принтер
    Get-Process | Out-Printer "Printer 1"
  • Вывод в файл
    Get-Process | Out-file "c:\a\1.txt"
  • Вывод в файл отформатированной таблицы
    Get-Process | Format-Table id, processname, cpu, ws | Out-file "c:\a\1.txt"
  • Фильтр where для задания условий
    Get-Process | Where-Object {$_.ws -gt 1000000 }


Модель навигации
  • чтобы перейти в реестр, надо выполнить такую команду:
    cd hklm:\
  • Список всех логических дисков
    Get-PSdrive
  • Список всех установленных провайдеров для логических дисков
    Get-PSProvider

    Файловая система (A, B, C и т.д.)
    реестр (HKCU, HKLM)
    переменные среды (env)
    хранилище сертификатов (cert)
    функции PowerShell (function)
    переменные PowerShell (variable)
    псевдонимы PowerShell (alias)

  • Команды для навигации по дискам:
    Get-ChildItem (псевдонимы dir, ls) - просмотр папки
    Get-Content (type, cat)  - прочитать элемент
    New-Item (ni) - создать элемент
    Get-Location (pwd) - просмотр текущего местоположения
    Set-Location (cd) - смена расположения


Работа с путями
  • Одна точка (.) означает текущий каталог, две точки (..) – родительский.
  • Команда test-path проверяет существование пути.
  • Команда resolve-path работает с символами заместителями в адресе и выводит все подходящие пути, например:
    Resolve-path c:\a* 
    - выведет все каталоги, начинающиеся с буквы a.
  • Можно задать новый диск, для какого-нибудь сложного пути, чтобы легче его вызывать. Например:
    New-PSDrive -Name Mydocs -PSProvider FileSystem –Root "c:\Sample\Docs\"
    И затем обращаться к нему так:
    Dir mydocs:
    Этот новый диск будет виден только в текущей сессии WPS , при этом он остается недоступен другим приложениям.


  • Консоль
  • Tab для автозавершения и F7 для вывода истории команд. Параметры окна консоли можно настроить в меню Свойства.