Powershell 1.0 – основы для администраторов. Часть 2

 

Псевдонимы (aliases)

Для сокращения ввода и просто для удобства работы при вызове можно применять псевдонимы. Есть встроенные псевдонимы, например ps вместо get-process или gci вместо get-childitem. Полный список псевдонимов можно увидеть через get-alias.

Можно создавать свои псевдонимы. Это делается командами Set-Alias или New-Alias, но они будут доступны только в текущей сессии работы WPS.  Псевдоним можно создать для любой внешней программы, например для Блокнота это выглядит так:

Set-Alias npd notepad.exe

WPS может вычислять выражения. Наберите в строке 2+5 и посмотрите результат).

Посмотреть все команды можно с помощью Get-command. Например, вывод всех команд, начинающихся с get:

Get-command get-*

Справка выводится по команде Get-help. Например, помощь по get-process:

Get-help get-process или get-process -?

Полная справка по команде дается с ключом full

Get-help get-process –full

 

Конвейеры

WPS поддерживает объектно-ориентрованные конвейеры, которые позволяют передавать результат работы одной команды в другую. Для создания конвейера используется вертикальная черта |. В конвейер передается типизированный .Net объект.

Например, вывод только имени и размера 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 }

В следующей части я расскажу о модели навигации в WPS.

PowerShell 1.0 – основы для администраторов

Этой публикацией я открываю небольшой цикл, в котором расскажу о командной строке – Windows PowerShell 1.0. Я ставлю перед собой задачу дать начальное представление, что это такое и как устроено, и показать простые примеры использования, которые могут пригодиться администраторам в реальной работе. Я намеренно оставляю за кадром архитектуру PowerShell и возможности программирования на нем (скрипты, использование .NET объектов), сосредоточившись исключительно на интерактивном применении простых команд.

 

Часть 1

 

Windows PowerShell - что это такое? 

  • Windows PowerShell (далее WPS) - это продвинутая командная строка, подобная UNIX shell, но с поддержкой .NET, COM и WMI.
  • Команды, которые вы вызываете в WPS, называются commandlets (в русской документации они называются командлеты, я же далее буду называть их команды)
  • Команды поддерживают конвейеры (pipelines), т.е. могут передавать результат своей работы другим командам в рамках одной строки вызова

 Где взять?

В Windows 2008 поставляется в дистрибутиве, но требует отдельной установки через добавление роли. Для других ОС нужно скачать дистрибутив с сайта Microsoft. Поддерживаемые ОС:

  • Windows XP with Service Pack 2
  • Windows Server 2003 with Service Pack 1
  • Windows Vista

WPS является .NET приложением и требует наличия .NET 2.0 в системе. WPS может работать в двух режимах – интерактивном и скриптовом. Мы будем рассматривать работу в интерактивном режиме.

Первые команды

Откройте консоль WPS и наберите следующие команды (WPS регистронезависим):

get-process  - вы получите список всех процессов в системе

get-service ms* – вы получите список всех сервисов, имена которых начинаются с ms

get- и нажмите клавишу tab – вы воспользовались функцией автозавершения (нажимая клавишу несколько раз, вы перебираете возможные варианты команд)

Get-Eventlog – эта команда требует ввода параметров, ответьте на приглашение LogName: и введите  Application – будет выведен системный журнал событий Application

 

Структура команд

Команда WPS состоит из трех элементов – глагола, существительного и списка параметров (опционально). Глагол и существительное разделены дефисом, например:

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

Автозавершение  также работает с параметрами. Попробуйте это на примере get-childitem +tab. Также при задании параметров поддерживаются стандартные символы заместители (*, ?, интервалы [a-v] и т.п.) , например:

Get-process ?i*

 

В следующей части я расскажу про псевдонимы и работу с конвейерами.

.NET Framework Configuration Tool в Windows 2008

На курсах часто возникает вопрос - где в Windows Server 2008 находится .NET Framework Configuration Tool?

Дело в том что, начиная с версии 2008, эта утилита в состав сервера не включается, а поставляется в составе .NET Framework 2.0 Software Development Kit (SDK). Т.е. чтобы она появилась в системе, надо установить на сервере  этот SDK.

Установленная утилита позволит вам управлять настройками .NET Framework всех версий (1.1-3.5).

Скачать .NET Framework 2.0 SDK можно здесь.