Здравствуйте, коллеги!
Сегодня мы живем в таком времени, когда для бизнеса в условиях большой конкуренции для обеспечения своей жизнеспособности и роста на одни из первых ролей выходят эффективность использования имеющихся ресурсов, возможность практически на лету по щелчку пальцев разворачивать, масштабировать информационные системы, централизованно управлять огромным парком машин, решать задачи в максимально сжатые сроки и т.д. Сюда можно отнести и грамотный менеджмент, но мы поговорим об информационных технологиях, таких как Windows Powershell.
Powershell – это средство, овладев которым, у Вас вместо двух рук появится тысяча. Это очень мощный на сегодняшний день инструмент автоматизации процессов, выполняемых нами ежедневно на тысячах рабочих станций и серверов под управлением операционных систем Windows и не только. Это скриптовый язык программирования, позволяющий интерактивным образом напрямую обращаться к объектам классов .NET Framework, имеющихся в операционной системе, и выполнять над ними различного рода операции.
Немного о языке Powershell
Простейшими единицами в powershell являются командлеты. Командлет – это объект класса Cmdlet. Он содержит в себе последовательность инструкций, необходимых для выполнения конкретной узко направленной задачи. Все командлеты именуются по так называемому принципу “глагол”-“существительное”. Что означает – “какое действие мы хотим сделать”-“над каким объектом”. Например, чтобы получить список запущенных на текущий момент процессов необходимо использовать командлет Get-Process. В качестве глагола могут использоваться такие действия как “Set”, “Remove”, “Add”, “Restart”, “Stop”, “New” и другие. О синтаксисе и общей структуре команд читайте здесь.
Одно из основных преимуществ PowerShell над своими предшественниками (CMD, WMIC, WSH) – конвейеризация. Это передача результата выполнения предшествующего командлета на вход для обработки последующему командлету. Например, таким образом мы можем быстро и точно определить процесс, наиболее утилизирующий оперативную память и завершить его. Для чего выполним следующий нехитрый код:
Get-Process | Sort-Object WS -Descending | Select-Object -First 1 | Stop-Process -Force
Что мы сделали? С помощью командлета Get-Process получили список всех запущенных процессов. Отсортировали список по убыванию по параметру WS(Рабочий набор) при помощи Sort-Object. Выбрали из списка только самый первый после сортировки благодаря Select-Object и ключа -first. И принудительно завершили процесс командой Stop-Process. Ключ -force указывает на принудительное выполнение данной команды, игнорируя возражения со стороны операционной системы. Для передачи вывода одного командлета на вход следующему используется символ “|” (PipeLine).
В операционной системе Windows Powershell представлен в двух вариантах:
- в виде простой консоли (в отличие от аналогичной CMD в строке приглашения “PS C:\WINDOWS\system32>” указаны буквы “PS”)

- в виде полноценной среды разработки и выполнения сценариев Powershell ISE

Возможности этих инструментов и будут обозреваться в рубрике – Основы Powershell.