Найти в Дзене
Заметки админа

Автоматизация рутины - PowerShell

Windows PowerShell является скриптовым языком программирования, анонсированным Microsoft в 2003 году, который представляет большие возможности по администрированию и конфигурированию Windows систем. Если до этого для подобных операций использовался командный язык (пакетные файлы, скрипты, сценарии, ”батники”) запускаемые из консоль, то теперь есть возможность писать скрипты на более мощном языке, используя больше возможностей самой ОС. PowerShell предлагает нам писать сценарии как из самой консоли, так и из полноценной среды разработки PowerShell ISE, которая является неплохим помошником при написании скриптов, помогая такими функциями как подсветка синтаксиса и автозаполнением. На самом деле ничего сложного нет, поначалу конечно страшно, не понятно, но в итоге оказалось все очень просто и очень функционально. Powershell в качестве команд использует командлеты. Командлеты представляют из себя предопределенную команду, а выглядят они как связка глагола и существительного через дефис.

Windows PowerShell является скриптовым языком программирования, анонсированным Microsoft в 2003 году, который представляет большие возможности по администрированию и конфигурированию Windows систем.

Если до этого для подобных операций использовался командный язык (пакетные файлы, скрипты, сценарии, ”батники”) запускаемые из консоль, то теперь есть возможность писать скрипты на более мощном языке, используя больше возможностей самой ОС.

PowerShell предлагает нам писать сценарии как из самой консоли, так и из полноценной среды разработки PowerShell ISE, которая является неплохим помошником при написании скриптов, помогая такими функциями как подсветка синтаксиса и автозаполнением.

На самом деле ничего сложного нет, поначалу конечно страшно, не понятно, но в итоге оказалось все очень просто и очень функционально. Powershell в качестве команд использует командлеты. Командлеты представляют из себя предопределенную команду, а выглядят они как связка глагола и существительного через дефис. Вот пару примеров:

Get-childitem - аналог команды dir, предоставляет список файлов и директорий. Можно использовать dir или ls (тут есть намек на линукс, но ключи никсовые тут не роляют). Он может работать как с папками, так и с файлами рекурсивно или нет.

Вот пример, который выведет все директории с полными путями, которые в имени имеют цифру "1" в директории C:\dir:

Get-childitem C:\dir -folder |? {$_.Name -like "*1*"} |% {$_.FullName}

Тут Name и FullName являются свойствами объекта. Посмотреть все свойсьа объекта можно командлетом Get-member.

Таким же способом можно легко прибить любьой процесс, сейчас мы убъём все процессы, которые в названии имеют слово excel:

Get-process | where {$_.ProcessName -like "*excel*"} | stop-process

Список всех командлетов можно получить командлетом Get-Help-Category.

В общем, если немножко разобраться, то оказывается, что ничего сложного. Powershell действительно удобен для управления Windows, это полноценный скриптовой язык, который имеет массу возможностей.