Что такое Windows PowerShell и для чего он нужен. Как открыть PowerShell, все методы Что такое виндовс повер шелл

В данной статье мы рассмотрим такую технологию от компании Microsoft как Windows PowerShell , мы поговорим о том, что такое PowerShell, что такое командлеты и конвейер, как писать сценарии и модули, а также затронем другие не менее важные и полезные возможности Windows PowerShell.

Что способствовало появлению Windows PowerShell?

До появления PowerShell существовали (и существуют ) следующие инструменты для автоматизации и администрирования сервисов: командная строка Windows и Windows Script Host. Но у этих технологий есть недостатки.

У командной строки Windows есть и возможность выполнять какие-то административные задачи и возможность записать алгоритм действий, сохранив его в виде скрипта (bat-файла), при этом можно использовать некие элементы программирования, например, использовать переменные, условные конструкции и даже что-то вроде циклов.

Большинство программных продуктов имеет консольный интерфейс, т.е. мы можем управлять программой, используя командную строку, при этом экономя ресурсы за счет отсутствия затрат на работу графического интерфейса. Компания Microsoft для серверной операционной системы Windows Server даже выпускает редакции без графического интерфейса (Server Core, в Windows Server 2016 даже есть Nano Server ), но всего этого недостаточно, так как возможности командной строки ограничены, т.е. написать какую-то сложную логику для автоматизации чего-либо мы не сможем, а если и сможем, то на это нам потребуется время и знания.

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

Технология Windows Script Host позволяет выполнять все административные задачи, что и командная строка, включая их автоматизацию путем написания WSH скриптов , но здесь мы уже можем использовать полноценные языки программирования (VBScript и JScript ), т.е. можно реализовывать сложную логику и алгоритмы. К тому же с помощью WSH мы управляем программными продуктами через объектный интерфейс, другими словами Windows Script Host намного «круче » чем командная строка. Но данная технология также не стала тем идеальным инструментом администрирования и автоматизации этого администрирования для системных администраторов, так как Windows Script Host требовал знаний вышеперечисленных языков программирования, что для системных администраторов на самом деле лишнее. Администраторам нужно всего лишь простой инструмент администрирования с возможностью запрограммировать какие-то действия, а углубляться в объектные модели программных продуктов на языках программирования VBScript и JScript им не хочется.

В итоге компании Microsoft необходимо было разработать такой инструмент администрирования для системных администраторов, который бы на 100 процентов удовлетворял все потребности сисадминов как в плане возможностей администрирования и автоматизации, так и в плане удобства и простоты использования, таким образом, появился Windows PowerShell.

Что такое Windows PowerShell?

Windows PowerShell – это язык сценариев и командная оболочка Windows, которые разработаны для администрирования и конфигурирования операционных систем Windows. PowerShell разработан на основе среды CRL и платформы.NET Framework и в отличие от командной строки, которая принимает и возвращает текст, Windows PowerShell работает с объектами. У каждого объекта в PowerShell есть свойства и методы, которые можно использовать для управления этими объектами.

В Windows PowerShell Microsoft разработала концепцию командлетов (cmdlets ), которая представляет собой систему именования команд «Глагол-Существительное ». Данная система позволяет системным администраторам быстрей освоить и упростить работу с PowerShell.

С помощью Windows PowerShell можно:

  • Получать доступ к файловой системе;
  • Управлять реестром;
  • Управлять службами;
  • Управлять процессами;
  • Настраивать операционную систему;
  • Устанавливать программное обеспечение;
  • Устанавливать роли и компоненты сервера;
  • Осуществлять администрирование и конфигурирование ролей и компонентов сервера;
  • Писать и использовать сценарии для автоматизации управления и администрирования;
  • Выполнять другие задачи системных администраторов.

Windows PowerShell содержит многие часто используемые утилиты и команды, запускаемые из командной строки, например ipconfig, ping и другие. Сделано это для того, чтобы облегчить переход системных администраторов с командной строки на PowerShell.

Также для удобства многие часто используемые команды и утилиты в PowerShell имеют синонимы (Alias ), например cls — это синоним командлета Clear-Host, dir синоним Get-ChildItem (полный список синонимов можно посмотреть путем запуска командлета Get-Alias ).

Для упрощения поиска нужной команды в PowerShell есть специальный командлет Get-Command, с помощью которого можно осуществлять поиск, как по глаголу, так и по существительному. Все команды в Windows PowerShell сгруппированы в модули (например, Hyper-V, NetTCPIP ), что также упрощает поиск нужной команды.

После того как нужная команда найдена, можно посмотреть инструкцию по работе с этой командой, т.е. справку, для этих целей есть специальный командлет Get-Help, например следующая команда покажет справку по командлету Get-Command:

Get-Help Get-Command

Справка в Windows PowerShell может быть краткой, детальной (параметр -Detailed ), полной (параметр -Full ), а также можно выводить только примеры (параметр — Examples ). Следующая команда покажет только примеры использования командлета Get-Command:

Get-Help Get-Command -Examples

Справка PowerShell обновляемая, т.е. ее можно обновить командой Update-Help.

Версии Windows PowerShell

Первая версия PowerShell 1.0 появилась 14 ноября 2006 года и выпускалась в виде отдельного дистрибутива, который можно было установить на следующие версии операционных систем Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 и Windows Vista.

В Windows Server 2008 PowerShell 1.0 поставлялся в виде компонента, который также нужно было устанавливать.

Начиная с Windows 7 и Windows Server 2008 R2, PowerShell поставляется как неотъемлемый компонент системы (т.е. предустановленный, устанавливать его не надо ). Ниже представлена таблица соответствия версии PowerShell и версии операционной системы Windows (т.е. какая версия PowerShell по умолчанию установлена в той или иной версии Windows ):

Версия PowerShell Версии Windows
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

С каждой новой версией PowerShell становится все более мощным инструментом администрирования, для сравнения в первой PowerShell было около 130 командлетов, а в PowerShell 5.0 их уже более 600!

Узнать текущую версию PowerShell можно с помощью свойства PSVersion встроенной переменной $PSVersionTable, например, выполните следующую команду:

$PSVersionTable.PSVersion

Или запустите командлет

Get-Variable -Name PSVersionTable –ValueOnly

где, значение PSVersion и будет версией PowerShell.

Язык PowerShell

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

Язык PowerShell имеет единый синтаксис написания команд и структуру именования этих команд по принципу «Глагол-Существительное », что делает данный язык интуитивно понятным как для программистов, так и для системных администраторов.

Оболочка Windows PowerShell

Оболочка Windows PowerShell – это среда выполнения команд и сценариев на языке PowerShell. Данная оболочка имеет те же возможности что и командная строка такие как: хранение истории выполнения команд, настройка внешнего вида оболочки, завершение выполнения команд сочетанием клавиш Ctrl+C, а также много других возможностей, которых нет в оболочке командной строки, например такая замечательная возможность как «подсветка синтаксиса » (появилась в PowerShell 5.0 ).

Запустить оболочку PowerShell можно несколькими способами, например:

  • Из командной строки, набрав PowerShell;
  • Через диалоговое окно «Выполнить » (сочетание клавиш Win+R ), также набрав PowerShell;
  • В Windows 7 — Пуск->Все программы ->Стандартные ->Windows PowerShell -> Windows PowerShell;
  • В Windows 8.1 или Windows Server 2012 R2 — Пуск->Все программы ->Служебные ->Windows PowerShell;
  • В Windows 10 или Windows Server 2016 — Пуск->Все программы -> Каталог Windows PowerShell (в группе W ) -> Windows PowerShell.

Пример запуска PowerShell в Windows Server 2016

Скриншот оболочки PowerShell в Windows Server 2016


Командлеты в PowerShell

Командлет (cmdlet ) – это команда Windows PowerShell, с помощью которой можно осуществлять взаимодействие с объектами операционной системы с целью их управления. Данные команды являются частью языка PowerShell. Командлеты построены по принципу «Глагол-Существительное », разделенные дефисом (-); другими словами, мы сначала указываем, что делать, а через дефис — над чем. Например, командлет Get-Help, где Get — это глагол, означающий «Получить », а Help — существительное «Помощь » в контексте PowerShell «Показать – Справку ». Командлеты PowerShell возвращают результаты в виде объектов, что является одним из главных отличий от командной строки Windows, в которой команды возвращают только текст на экран.

Кроме командлетов на получение данных (Get), существуют и такие типы командлетов как:

  • Add – добавление данных;
  • Clear – очистить;
  • Enable – включить;
  • Disable – выключить;
  • New – создать;
  • Remove – удалить;
  • Set – задать;
  • Start — запустить;
  • Stop – остановить;
  • Export – экспортировать;
  • Import – импортировать;
  • И еще много других.

Полный список командлетов в Windows PowerShell можно посмотреть с помощью специального командлета Get-Command. Например, запустите его с параметром -CommandType cmdlet, в итоге на экране у Вас отобразится список командлетов.

Get-Command -CommandType cmdlet

Как Вы уже поняли, у командлетов есть параметры, с помощью которых мы можем конкретизировать действия командлета. Параметры бывают обязательные и необязательные, например, у командлета Get-Command обязательных параметров нет.

Ниже на картинке представлен способ поиска командлета по глаголу (параметр Verb ). В данном случае у нас отобразился список командлетов, которые умеют что-то перезапускать.


Команда

Get-Command -Verb Restart

Для поиска командлета по существительному необходимо использовать параметр Noun. Например, ниже мы получили список командлетов, которые работают со службами.


Команда

Get-Command -Noun Service

Если Вы не нашли нужный командлет по полному названию можете использовать маску в формате *Текст*.

Конвейер в PowerShell

Одной из главных возможностей Windows PowerShell является возможность использования конвейера при выполнении команд.

Конвейер – это передача результата работы командлета через вертикальную черту (|) другому командлету. При этом, как Вы помните, в PowerShell командлеты работают с объектами и возвращают объекты, соответственно по конвейеру передаются также объекты.

С помощью конвейера можно выполнять сложные задачи простым и удобным способом без необходимости написания сложных алгоритмов и сценариев.

Например, давайте узнаем название самого большого файла в каталоге «C:\Windows\System32» (простой пример конвейера ).


Команда

Get-ChildItem -Path "C:\Windows\System32" -File | Sort-Object length -Descending | Select-Object -First 1

  • Get-ChildItem – командлет получения объектов в указанном каталоге;
  • Sort-Object – командлет для сортировки объектов, в нашем случае мы сортируем по размеру файла (length -Descending );
  • Select-Object – командлет выбора нужных свойств объекта, в нашем случае мы выводим стандартные поля и только самый первый объект, т.е. большой файл (параметр -First 1 ).

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

Фоновое исполнение заданий

В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется ) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.

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

В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.

Например, давайте запустим какую-нибудь задачу (показать список служб ) в фоновом режиме, затем посмотрим на список фоновых заданий и выведем на экран результат работы нашего задания (т.е. список служб ).

Запуск задачи в фоновом режиме

Start-Job {Get-Service}

Смотрим на список задач запущенных в фоновом режиме

Отображаем результат работы задания Job1

Receive-Job Job1


Как видим, у нас появилась задача со статусом «Completed », т.е. она уже выполнилась (просто Get-Service отрабатывает быстро ).

Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора ). В результате у нас отобразился список служб.

Удаленное управление на PowerShell

Windows PowerShell рассчитан не только на локальное использование, но и на удаленное выполнение команд. Данная возможность необходима, чтобы Вы могли со своего рабочего места управлять удаленными компьютерами, т.е. выполнять команды PowerShell.

Существует несколько способов удаленного управления:

  • С помощью параметра –ComputerName (есть у многих команд ). Другими словами Вы передаете имя компьютера, на котором необходимо выполнить команду, в качестве параметра. Способ обладает недостатком, так как ограничивается выполнением одной команды;
  • С помощью сессий. Командлет Enter-PSSession (интерактивный сеанс ). Таким способом Вы подключаетесь к удаленному компьютеру и все команды, которые Вы будете набирать в оболочке PowerShell, будут выполняться на удаленном компьютере так же, как если бы Вы набирали команды непосредственно на удаленном компьютере. Способ также обладает недостатком, так как сеанс ограничивается одним компьютером;
  • С помощью командлета Invoke-Command . С помощью данного способа можно выполнять команды или сценарии как на одном компьютере, так и на нескольких.

Например, чтобы подключиться к удаленному компьютеру (в примере ниже ServerName ) интерактивным сеансом выполните следующую команду:

Enter-PSSession ServerName

Сценарии, функции и модули в Windows PowerShell

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

Суть данного механизма следующая, Вы пишите нужный Вам набор команд и сохраняете его в качестве сценария — это простой текстовый файл с расширением.PS1.

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

Важно!

По умолчанию выполнение сценариев в Windows запрещено! Для того чтобы посмотреть политику выполнения сценариев выполните командлет Get-ExecutionPolicy . В результате он вернет действующую политику, например:

  • Restricted – блокируется выполнение любых сценариев (значение по умолчанию );
  • AllSigned – разрешено выполнение сценариев, которые имеют цифровую подпись;
  • RemoteSigned – разрешено выполнение локальных сценариев, все скачанные сценарии должны иметь цифровую подпись;
  • Unrestricted — разрешено выполнение любых сценариев (не рекомендуется, так как небезопасно! ).

Для разрешения выполнения сценариев необходимо использовать командлет Set-ExecutionPolicy с одним из вышеперечисленных параметров.

Например, для разрешения выполнения локальных сценариев выполним следующую команду, и согласимся с внесением изменений, нажав Y.

Set-ExecutionPolicy RemoteSigned

В сценарии можно передавать параметры, делать их обязательными или задавать значение по умолчанию.

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

Для этого необходимо указать ключевое слово Function и затем в фигурных скобках {} написать алгоритм работы этой функции, т.е. набор команд (например, какая-нибудь часто используемая процедура: создать пользователя с определенными правами, очистить определенные каталоги и так далее ). Потом необходимо сохранить все это в сценарий, но только уже с расширением.psm1, так как этот файл будет являться уже модулем.

Это еще не все, этот файл необходимо поместить в каталог, в котором PowerShell ищет модули. Таких каталогов несколько (специальный каталог в профиле пользователя, каталог, где установлен PowerShell ), их можно посмотреть в переменных окружения PowerShell. Для этого выполните следующую команду

Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize

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

Интегрированная среда сценариев Windows PowerShell (ISE)

Для того чтобы было удобно писать сценарии, функции и соответственно модули, компания Microsoft разработала специальную графическую программу Integrated Scripting Environment (ISE) — интегрированная среда сценариев. Работать в этой программе очень удобно, к тому же она имеет мощный функционал (создание множества вкладок со сценариями, область вывода, встроенный отладчик и другое ).

Запустить ее можно следующим образом:

  • В Windows 7 — Пуск->Все программы ->Стандартные ->Windows PowerShell -> Windows PowerShell ISE;
  • В Windows 10 или Windows Server 2016 — Пуск->Все программы -> Каталог Windows PowerShell (в группе W ) -> Windows PowerShell ISE.

Примечание! ISE не будет работать на системе Windows Server, установленной в варианте Server Core.

Скриншот интегрированной среды сценариев PowerShell (ISE) в Windows Server 2016


На этом у меня все, надеюсь, материал был Вам полезен! Удачи!

Устанавливая новую версию операционной системы Windows, начинающие пользователи встречают новые названия программ, которых раньше, возможно не слышали и предназначение которых им не понятно. Одно из таких приложений PowerShell. Если оно предустановлено в ОС, значит для чего-то оно служит. Что это за программа Winodws PowerShell, часто задаются этим вопросом пользователи. Давайте ее рассмотрим подробнее.

Рабочее окно PowerShell

Это приложение является полезным инструментом для системных администраторов и разработчиков, но для других пользователей, тем более для начинающих, оно мало чем полезно. Windows PowerShell представляет собой современную, усовершенствованную командную строку, которая способна предоставлять более гибкую работу с настройками и управлению компьютера в операционной системе Windows. Иными словами, та же командная строка с дополнительными возможностями.

Возможности и предназначение программы PowerShell

Видно, что эта программа Winodws PowerShell является интерфейсом для скриптового языка, а также является платформой для выполнения этих скриптов. PowerShell был выпущен в 2006 году, который входил во второй сервис-пак и с того времени программа стала частью всех операционных систем компании Microsoft. Скрипты данной программы имеют расширение PS1 и способны запускаться, подобно файлам BAT и CMD.

Этот скриптовый язык разрабатывался, прежде всего, для деловых клиентов Microsoft, которым требуются мощные инструменты автоматизации различных задач в управлении компьютерами и серверами, под управлением Windows. За основу для языка взята платформа.NET от Microsoft.

Windows PowerShell дает возможность автоматизировать множество различных задач и процессов. Она позволяет установить контроль над службами, аккаунтами, настройками, процессами и т.д. Скриптовый язык воспринимает все команды из командной строки ОС, в свою очередь имеет богатый собственный язык, который состоит из определенных команд, они называются командлетами (cmdlets). Эти командлеты работают по принципу Глагол + Существительное. К примеру, «Get-Help», что в переводе с английского означает «Получить Помощь». Этот командлет вызывает справку. Для того, чтобы получить информацию о каком-либо командлете, введите «Get-Help Get-Process». В этом случае программа предоставит информацию о камендлете «Get-Process».

Запуск и работа в Windows PowerShell

Есть несколько различных способов запустить программу Windows PowerShell в ОС. Для простоты поиска программ в операционной системе существуют окно поиска. Его можно найти, открыв ярлык «Мой компьютер» в верхней части экрана с правой стороны. Введите запрос «PowerShell» и в результатах поиска откройте программу. В Windows 10 программу можно запустить из любой рабочей папки, для этого нужно сделать клик по кнопке «Файл» в верхней части слева.


Запуск PowerShell

Для того, чтобы продемонстрировать как работает эта программа Windows PowerShell, испробуем ее некоторые возможности, например, давайте почистим корзину. Для этой функции есть специальный командлет – «Clear-RecycleBin». Он пригодится для написания скрипта при обслуживании компьютеров. При вводе такой команды, нужно указать локальный диск, на котором расположено приложение, с которым необходимо выполнить это действие: «Clear-RecycleBin C:». Далее появится строка с запросом на подтверждение, здесь необходимо нажать клавишу «Y» и «Enter».


Очистка корзины с помощью PowerShell

Если к командлету «Clear-RecycleBin C:» добавить часть «-Force», корзина очиститься без подтверждения.

  1. Давайте распакуем архив при помощи программы PowerShell.
  2. Для этого существуют заданные команды «Expand-Archive» и «Compress-Archive».
  3. Для того, чтобы заархивировать папку «C:\file\» в «C:\archive\file2.zip», следуйте указанной команде: «Compress-Archive –LiteralPath C:\file\ -DestinationPath C:\archive\file2.zip.
  4. В результате исполнения этой команды в указанной выше директории появится архив с именем «file2.zip», в котором будет заархивировано содержимое папки «C:\file\».

Основные командлеты программы PowerShell

У этой программы есть масса разных команд, применяемых к различным компонентам Windows и описать их все в это статье не выйдет. Вот некоторые основные команды Windows PowerShell:

  1. «Update-Help» — обновление справки для определенного компонента.
  2. «Get-Help» — получение справки.
  3. «Get-Command» — поиск из списка командлетов.
  4. «Format-Table» — обзор результата определенной команды в таблице.
  5. «New-Variable» — новая переменная.
  6. «Remove-Variable» — удаление значения переменной.
  7. «Set-Variable» — указать значение для переменной.
  8. «Format-Wide» — обзор результата выполненной команды в виде таблицы, в которой присутствует только одно свойство для одного объекта.

PowerShell 5.0 идет с Windows 10, но для предыдущих ОС новая версия вышла в составе Windows Management Framework 5.0 только в конце февраля, причем со второй попытки . Сегодня я расскажу о некоторых нововведениях, но начну с того, зачем вам может понадобиться PowerShell.

Зачем вам нужен PowerShell

Просто так изучать PowerShell нет смысла, и это верно для любого языка – скриптового, программного и даже человеческого. Как и многие решения Microsoft, PowerShell делается с прицелом на бизнес для автоматизации задач по управлению ПК и серверами в организациях.

В основе скриптового языка лежит мощная программная платформа.NET, поэтому возможности PowerShell простираются намного дальше администрирования.

Как-то раз мне понадобилось удалить один столбец из множества книг Excel 2013. Ручная работа претила, а гугление не давало готового решения. Я создал тему на форуме (да, я тоже иногда задаю вопросы на OSZone:). Мне подходил любой язык, но решение неожиданно для меня оказалось на PowerShell. Как выяснилось, можно загрузить Excel в качестве COM-объекта и манипулировать им дальше.

Впоследствии я не раз использовал модификацию того скрипта для автоматического обновления десятков книг Excel, подтягивающих данные из других файлов. Это сэкономило мне массу времени и сил.

Думаю, идея понятна, и можно уже переходить к новинкам PowerShell 5.0.

8 полезных возможностей

Подсветка синтаксиса

В новой консоли намного легче ориентироваться!

Красный цвет и нумерация строк, однако, из другой оперы .

Поиск по истории в двух направлениях

Сочетания клавиш: Ctrl + R и Ctrl + S
Командлеты: Get-PSReadlineKeyHandler и Set-PSReadlineKeyHandler

Как и в CMD, в PowerShell есть история сессии с навигацией стрелками, a Get-History выводит журнал по аналогии с F7 . Полный список сочетаний клавиш, связанных с журналом, можно вывести так:

Get-PSReadlineKeyHandler | ? {$_.function -like "*hist*"}

В результатах появились две новые функции поиска по истории, которые показаны на картинке ниже. Работает это очень просто.


В отличие от Get-History, содержащей историю текущей сессии, этот журнал ведется глобально и сохраняется при закрытии окна.

Спасибо за наводку Антону Дровосекову и Константину Сидякину из нашей группы ВК .

Создание соединений, символических и жестких ссылок

Командлеты: New-Item , Remove-Item , Get-ChildItem

У меня в блоге хватает рассказов , поэтому я не мог обойти вниманием возможность их создания в PowerShell.

#Символическая ссылка на файл New-Item -ItemType SymbolicLink -Path C:\test\MySymLinkFile.txt -Target C:\test\1.txt #Символическая ссылка на папку New-Item -ItemType SymbolicLink -Path C:\test\MySymLinkFolder -Target C:\Windows\ #Жесткая ссылка на файл New-Item -ItemType HardLink -Path C:\Test\MyHardLinkFile.txt -Target C:\test\1.txt #Соединение New-Item -ItemType Junction -Path C:\Temp\MyJunctionDir -Target C:\Windows

Честно говоря, синтаксис команды mklink запомнить проще, поэтому быстрее может получиться так:

Iex "mklink /d C:\test\MySymLinkFolder C:\Windows"

Создание временного файла

Командлет: New-TemporaryFile

В скриптах нередко нужно создать временный файл, чтобы скинуть туда какую-то информацию. Новый командлет создан именно для этого.

#Создание временного файла New-TemporaryFile #Создание временного файла и получение его полного пути $tmpfile = (New-TemporaryFile).FullName $tmpfile

Я редко делаю чистую установку основной системы, но на ВМ это происходит регулярно. И OneGet очень удобен для быстрой автоустановки ключевого набора программ.

Примечание. Можно использовать этот модуль, не устанавливая WMF 5.0. Предварительная версия модуля для PS 4.0 и 3.0 доступна отдельно — март 2016 , а более свежие ищите поиском в центре загрузки по запросу PackageManagement PowerShell Modules Preview .

Установка программ

В этом примере из репозитория Chocolatey устанавливаются четыре программы и полный набор утилит . Первые три команды выполняются однократно, причем смену политики надо подтвердить. Четвертая команда тихо устанавливает перечисленные программы, а пятая просто экономит время.

#Разрешить установку подписанных пакетов из Интернета Set-ExecutionPolicy RemoteSigned #Установить поставщик Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Сделать Chocolatey доверенным Set-PackageSource -Name Chocolatey -Trusted #Установить программы Install-Package NotepadPlusPlus, vlc, firefox, filezilla, sysinternals -Verbose -Force -ProviderName chocolatey #Добавить путь к исполняемым файлам (sysinternals) в PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

Поставщик скачивает в C:\Chocolatey\lib пакет, в основе которого лежит скрипт chocolateyInstall.ps1. Он загружает установщик программы с официального сайта в папку %temp%\Chocolatey и запускает его в режиме тихой установки. Простейший пример – Notepad++.

Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

Поиск программ

В репозиториях много программ, все самые популярные точно есть.

Find-Package "*zip*","*commander*" -ProviderName Chocolatey

Удаление программ

С удалением приложений не все так гладко, впрочем.

Uninstall-Package -name filezilla

В идеале удаление пакета должно повлечь тихое удаление программы, но реализация зависит от автора пакета и возможностей установщика. На практике одни пакеты не содержат скриптов для удаления, другие придумывают костыли в виде скриптов AutoHotkey, третьи просто запускают деинсталляцию интерактивно, предлагая вам закончить процесс вручную. Впрочем, если установщик — MSI, удаление работает четко.

Ссылки по теме OneGet и тихой установки:

  • Пошаговое руководство по установке программ из PowerShell (Дмитрий Буланов)
  • Типы инсталляторов и ключи тихой установки (моя статья 2005 года вполне актуальна:)
  • Сайт автоустановки Windows и форум автоустановки программ

Дискуссия и опрос

Для опытных «скриптовиков» и системных администраторов в PowerShell 5.0 есть и другие интересные возможности (например, классы по аналогии с языками объектно-ориентированного программирования). Полный список вы найдете на этой странице TechNet (ссылка ведет на английскую версию специально, поскольку русская пока не содержит сведений о 5.0).

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Об авторе

Подсветка синтаксиса в PowerShell 5.0, это установленный по умолчанию модуль PSReadLine. В предыдущих версиях его можно доустановить и прописать его в загрузку в профильном скрипте (переменная $profile) или подгрузить самому, когда нужно

Import-module psreadline

Можно поподробнее про тихую установку из скриптов? Не так давно стал пользоваться chocolatey, очень нравится, особенно обновление всех программ одной командой. Пока не разобрался с тихой установкой, все ставлю в ручном режиме, команда-подтверждение-установка.

6yHTapb

единственное, для чего пока мне понадобился PowerShell в win 10, это обход бага с неработающей кнопкой «свойства» в настройках VPN соединения. Set-VpnConnection -Name «Name» -SplitTunneling $true.
Кстати, Вадим. Есть какая-либо информация по этому поводу? Речь идет о кнопке в свойствах VPN соединения — сеть — IP версии 4 — «свойства». там обычно можно убрать галку «использовать шлюз в удаленной сети». сама кнопка активна, но при нажатии ничего не происходит. тут и помог PowerShell.

Сергей Рощин

Огромное спасибо за Chocolatey
на windows 7 я так понял на работает?

Lecron

По голосованию… Использую почти все варианты. Часть программ в портативном виде. Часть — устанавливается ручками с диска, для тех, которые умеют сами обновлятся или серьезная доработка давно закончена. Из них, часть скриптом. Часть новыми. Часть уже предустановлена в образ.
Опять же, клиенты и задачи бывают разные.

Про PowerShell… Считаю, что Микрософт промахнулся с названием. С первого взгляда, непонятно что получилось. Командная оболочка/процессор или скриптовый язык программирования. Слово Shell наталкивает на первое, но тогда уже давно пора, раз она такая крутая, сделать ее по умолчанию или хотя бы продвигать ее в качестве основной. Но реальные юзкейсы больше наталкивают на второе, замену WSH.

  • Lecron : но тогда уже давно пора, раз она такая крутая, сделать ее по умолчанию или хотя бы продвигать ее в качестве основной.

    В Win+X можно заменить CMD на PS (свойства панели задач — навигация). И продвигают они в качестве основной давно — на TechNet уже давно ничего нового нет про CMD, только PS.

    Конечно, целевая аудитория — ИТ-специалисты, но то же самое можно сказать про CMD и WSH. Но я не вижу вреда для ЦА своего блога. Я нахожу применение PS дома и на работе, и это не связано с администрированием..

    • Lecron

      Я не про вред. А про непонимание и соответствующие ошибки.
      Что это такое? Чем его видит Микрософт? Командный процессор, работающий, как правило, в интерактивном режиме, который также может

      Работать интерактивно в одном синтаксисе и семантике, а писать последовательности действий в других — нелепо. В этом и есть основная проблема. Такая глубинная, что даже вы ее не замечаете, хотя косвенно упомянули в статье. Синтаксис mklink не проще, а привычнее. Так как New-Item, с единым синтаксисом, позволяет создавать очень очень многое. И вот уже, фактически, его синтаксис проще, чем знание многих отдельных утилит, включая их наименование.

      Обещание сдержали - вот вам модуль для управления менеджерами пакетов, вперед.

      Не понял. Что такое «модуль управления менеджерами»?

        • Lecron

          Мне кажется, тут то собака и порылась. В провайдерах. Когда нет единого подхода к управлению пакетами. Фактически пользователю приходится знать и учитывать, какой из провайдеров используется. И не только пользователям, но и мейнтенерам.

          Фича, как обычно, ориентирована на организации, а MSI и MSU поддерживаются в полный рост.

          Lecron

          Возможно я не понял всей глубины этой фичи, поэтому такие глупые претензии.
          Понадобятся ли пользователю дополнительные телодвижения, если владелец репозитория/пакета сменит провайдера? Или создатель пакета изменит его настройки? Или все это берет на себя менеджер пакетов?

          Гм… вот фича — возьмите, попробуйте, разберитесь — это поможет снять некоторые вопросы. Есть поставщик, у него есть пакеты в репозитории. Убрали конкретный пакет? Тогда вы не сможете его скачать у этого поставщика. Но уже скачанный пакет остается локально, им дальше можно управлять.

          Lecron

          Кстати, вот еще вопрос. А есть ли команда Update-Package, а еще лучше Update-AllPackage?

          Привет. Скажи можно ли восстановить boot или bios и как это сделать? Слетел загрузчик виндовс 7 про. В boot изменил уже настройки но винда не хочет загружатся. Ранее была представлена винда 8.1 в сервисе воткнули винду 7 про без моего согласия. Помоги решить проблему!

Алексей

часто слышал про шоколадку, раз уж напомнили то решил наконец ее потестить. результат не особо впечатлил.

поставил массово набор софта уже стоящий на пк. только около 70% нашлось в репозитории.
ключи —y —accept-license —f —x — маны покурил буквально пару минут, может что не понял.
итог:
софт который я не просил: autoIT, autohotkey. зачем?
накатило старую версию Acrobat Reader DC, cheat engine;
не смогло скачать dropbox virtualbox;
тихий режим не сработал viber, wireshark, light alloy — пришлось ставить галочки и жмакать далее;
skype удалило старый, но не поставило новый.
и часть ярлыков не создала, теперь нужно вспоминать какие.

Warnings:
— adobereader
— windjview
— firefox
— notepadplusplus
— teamviewer

тут я не понял что за ошибки.

на чистую систему в любом раскладе придется качать руками остальной софт, или ставить из архива уже не поддерживаемый.
плюс редко, но кое где при установке нужно выбирать определенные конфигурации — состав пакетов и тп. здесь это реализуемо только скриптами под каждый продукт, что не сильно экономит время в домашних условиях. поскольку все эти опции могут меняться, и меняются от версии к версии — нужно следить и переписывать скрипты. звучит не очень.
если бы оно умело сканировать реестр и добавлять в базу или в гуй софт для выбора, было бы проще. а так сначала нужно потратить время для составления списка на установку — для верности пробивал каждый продукт, чтобы указать верное имя пакета.

  • Сергей

    PS C:\Users\Gerald> Find-Package "*paint.net*" -ProviderName Chocolatey Name Version Source Summary ---- ------- ------ ------- paint.net 4.0.6 chocolatey Paint.NET is image and photo manipulation software designed to be used on computers tha...

    Буквально сегодня натолкнулся на Хабрахабре в первый раз на упоминание Chocolatey и тут же в Вашей рассылке. Показалось что вот оно! Думал будет потрясающая скриптовая замена автоустановке свободнораспространяемого ПО с ninite.com, но увы. Актуальность софта не поддерживается на паранаидальном уровне, и проблематика есть описанная участниками выше.

    Виталий

    Я считаю, что для консоли лучше подходит философия UNIX:


    Пишите программы, которые бы работали вместе.
    Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.

    • Виталий, а что, в Windows входит консольная утилита для ZIP? А делается это для упрощения скриптов на PowerShell, не надо лезть в CMD, интегрированная справка и т.д.

      • Lecron

        А зачем лезть в cmd, если и тот и другой shell, и оба должны самостоятельно запускать исполняемые файлы и управлять их вводом выводом?
        Против включения такого функционала не возражаю, особенно если это сделано по уму, как интерфейс к zlib, а не очередное разбухание кодовой базы — в проводнике одно, в шелле другое, в cmd третье стороннее.

        Виталий

        Нет, не входит.
        Но я и на своём хостинге при первой попытке использовать zip получил что- то типа «zip не установлен. Установите командой apt-get install zip».

        Лезть в cmd? Выше сказали, что PS должен запускать бинарники.

        Справка? В Linux команда man %имя_утилиты% либо %имя_утилиты% -?, первая даёт подробный мануал, вторая как краткая справка по параметрам. Работает кажется везде.

        В итоге командный интерпретатор на Linux- одновременно простая и мощная вещь, есть множество альтернатив, так как в нём самом нет ничего сложного, он просто запускает программы, управляет потоком вывода и интерпретирует простейший синтаксис.

        strafer

        Vadim Sterkin : Виталий, а что, в Windows входит консольная утилита для ZIP?

        Стесняюсь спросить: а не проще было её добавить, чем запиливать встроенный функционал?

  • Herz Mein

    > зачем shell-у, своими средствами работать с архивами

    Если есть такая возможность, заложенная в.Net-классах, то почему бы ее не использовать? Тут просто другой подход, отличный от bash или cmd, которые интерпретаторы командной строки. CLI. А PowerShell скорее отладчик для скриптов, имхо.

    artem

    Lecron Что это такое? Чем его видит Микрософт? Командный процессор, работающий, как правило, в интерактивном режиме, который также может читать команды из файла, который называется скриптом? Или как язык написания скриптов, у которого есть свой REPL? Согласитесь, разница большая?

    Понятно, что задачи разные. Но я не вижу между ними противоречия. Т.е. вполне возможно одним инструментом закрыть обе потребности. К этому и стремится PowerShell. Что-то получается удачно, что-то не очень. Но виденье понятно.

    artem

    Vadim Sterkin :
    И продвигают они в качестве основной давно - на TechNet уже давно ничего нового нет про CMD, только PS.

    Скоро будет, надо полагать. CMD (саму оболочку) сейчас сравнительно активно начали дорабатывать. Хотя до этого лет десять не трогали вообще.

    artem

    Виталий Пишите программы, которые делают что-то одно и делают это хорошо.

    Не вижу противоречий. В PowerShell каждый коммандлет делает что-то одно (за редчайшими исключениями). Кто скажет, что «Expand-Archive» умеет записывать DVD или варить кофе — пусть первый кинет в меня камень.

    Виталий Пишите программы, которые бы работали вместе.

    Здесь PowerShell уделывает все известные мне оболочки, т.к. оперирует объектами, а не текстом. Т.е. «работать вместе» (передавать данные между коммандлетами) получается гораздо эффективнее. Не надо тратить время на парсинг текста и попытку объяснить следующей команде, что же именно представляет собой этот текст.

    Виталий Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.

    Потоки тоже поддерживаются. И если надо передвать именно тест — с этим нет никаких проблем.

    То есть PowerShell вполне следует приведённой философии.

    Виталий Вот например, зачем запихивать в PS «Создание соединений, символических и жестких ссылок» со своим синтаксисом, если есть mklink? Для чего там «Создание и распаковка архивов», если есть zip и его аналоги?

    Да потому что указанные коммандлеты — это и есть «аналог zip». На самом деле, ответить на эту претензию очень легко. Надо только осознать, что коммандлеты — это не встроенные возможности оболочки, а именно что внешние команды. И всё сразу встаёт на свои места. Ведь это нормально, что у нас есть команды для выполнения каких-то действий, правда? Это справедливо как для PowerShell, так и для любой другой оболочки.

    Да, есть небольшое количество коммандлетов, которые поставляются вместе с оболочкой по умолчанию. Но идеологически они ничем не отличаются от тех коммандлетов, которые появляются отдельно при установке соответствующих компонентов Windows или вовсе предоставляются сторонними разработчиками.

    • Lecron

      artem : Ведь это нормально, что у нас есть команды для выполнения каких-то действий, правда? Это справедливо как для PowerShell, так и для любой другой оболочки.

      Шелл - как много в этом слове… начало искажаться под воздействием MS.
      Все время считал, что команды не зависят от среды запуска, а встроенные в среду команды, нужны только для обслуживания возможностей самой среды, а не сторонних объектов. Неужели ошибался?
      С этой точки зрения PS начинает напоминать ACDSee и Nero.

      Виталий

      Здесь PowerShell уделывает все известные мне оболочки, т.к. оперирует объектами, а не текстом. Т.е. «работать вместе» (передавать данные между командлетами) получается гораздо эффективнее.

      Сомневаюсь, что все сторонние утилиты поддерживают эти самые объекты. А вот текст поддерживает любая утилита, работающая в командной строке.

      Надо только осознать, что командлеты - это не встроенные возможности оболочки, а именно что внешние команды. И

      Почему тогда у этих командлетов свой синтаксис? Ну никак не похоже, что это внешние команды.

      • artem

        Виталий : Сомневаюсь, что все сторонние утилиты поддерживают эти самые объекты.

        Сторонние утилиты — нет, конечно. А вот сторонние коммандлеты — запросто. Я бы сказал, что процентов восемдесят сторонних коммандлетов достаточно годно работают с объектами.

        Если коммандлета нет и приходится запускать именно утилиту (исполняемый файл), тогда конечно приходится кормить ей на вход текст. Но текст легко получить из объекта (развернув нужное свойство, например). Я понимаю, что это звучит заумно, но после набора критической массы опыта это получается совершенно интуитивно.

        Виталий : Почему тогда у этих командлетов свой синтаксис? Ну никак не похоже, что это внешние команды.

        С этим не могу не согласиться. «Не похоже» — правильное слово:)

        Как я сказал выше, к PowerShell надо привыкнуть. Причём я сейчас скажу гадость в сторону наших евангелистов и MVP, но злоупотребление алиасами (dir вместо Get-ChildItem, md вместо New-Item -ItemType «Directory», знак процента вместо Foreach-Object или вопроса вместо Where-Object и так далее, а также пропуск наименований параметров в случае, когда работает умолчание) только запутывает неподготовленных людей. Из-за этого, в том числе, у меня «привыкание» к PowerShell затянулось на годы. Мне кажется, что если бы все примеры команд, опубликованные в блогах и на форумах, содержали полный синтаксис, то новички испытывали бы гораздо меньше анальной боли.

    На самом деле, использую 2 варианта: разворачивание бэкапа, сделанного сразу после настройки системы либо ставлю собственную сборку Windows 7, куда включаю все нужные настройки и программы.
    А с Win10 менеджер пакетов пока просто ещё не освоил, хотя его наличие вызывает сильный энтузиазм.
    Раньше игрался с разными менеджерами пакетов под Windows, но по тем или иным причинам все были неудобными именно в расчёте «время на освоение»/»время на ручное скачивание». Оказалось проще сделать свою сборку, чем лепить скрипты.

    Евгений Казанцев

    Замечательное начинание, я увидел как установить пачку нужных прог одним скриптом, ninite пользовался, особо не впечатлило, сейчас пользуюсь WPI качанными с торрентов, плюс их в том что там есть много больше и реальная автоустановка, минус что необходимо доверять автору репака.
    Я одного не понял, как этим ОБНОВЛЯТЬ установленные программы полностью автоматически, что является ключевой базовой основной фичей любого пакет менеджера? Как сделать чтобы тот же нотепад++ прописался автоматом приложением по умолчанию без залезания в жутко неудобные «новые, они же современные» настройки? Как работает система зависимостей, и есть ли она там вообще?»

    А если оформить, как скрипт или функцию? Например так (без проверки на существование и без преобразования в полные пути, что необходимо):

    Param ( $create, $extract, $path, $zip) add-type -assembly system.io.compression.filesystem function create-zip ($path, $zip) { ::createfromdirectory($path, $zip) } function extract-zip ($zip, $path) { ::extracttodirectory($zip, $path) } if ($create) { create-zip $path $zip } if ($extract) { extract-zip $zip $path }

    Вызывать соответственно:

    .\test -c -p "C:\Some\Folder" -z "D:\Folder\out.zip" # Для создания.\test -e -p "C:\Some\Folder" -z "D:\Folder\out.zip" # Для извлечения

    • При чем тут оформление? Вы используете классы.NET напрямую в своей функции. Командлет избавляет от нбх обращаться к классам. В этом и разница. Примерно такая же, как между программистом и ИТ-специалистом.

      artem

      Троллейбус из буханки хлеба.jpg

      Я так понимаю, что никто не спорит с тем, что функциями можно сделать вообще всё, что угодно:) Польза же, очевидно, в том, что теперь конкретно для этого действия отдельную функцию писать не нужно. А значит — во-первых, людям будет проще этим пользоваться (особенно если они не умеют писать функции или не могут позволить себе каждый раз их импортировать), а во-вторых будет больше стандартизации. Это несомненное благо. Согласитесь, тупо, когда в пяти скриптах от пяти разных авторов требуется распаковывать архивы, и каждый решает эту задачу немного по-своему. (Например, одно время был популярен вариант через недокументированный com-объект Windows Explorer).

    lesha

    Я работаю на Windows и Mac, а если настраиваю сервер — то Linux. OS X начисто переустанавливал пару раз, но там всё просто — выбрал дату в TimeMachine 10-15 мин и система готова.
    На Windows у меня большинство программ портативные, ставлю только хром ибо иначе не обновляется и пакет программ Adobe, потому с версии СС они качаются через Cretive Cloud. Смысла городить огород с автоматизацией не вижу. PowerShell может и хорош, но мне на Windows нечего автоматизировать, а для Linux и OS X есть bash, которым я уже давно пользуюсь.
    Если друг просит «переустанови мне Винду, а то что-то глючит» ставлю систему с внешнего диска своим «фирменным» способом, а остальное пусть сам себе ставит

  • Первые операционные системы не содержали никакого интерфейса взаимодействия с пользователем, кроме командной строки. MS-DOS, например, позволяла общаться с собой только так. Графический интерфейс пользователя требовал от машины значительно большей мощности, чем имелось у компьютеров того времени. Появление GUI, казалось бы, устранило потребность в консоли. Однако командная строка – лишь кажущееся излишество.

    Поясним это на примере. Любую отдельную команду к ОС можно обернуть интерфейсом из окошек и элементов управления, наподобие флажков, списков выбора и кнопок. Но что делать, если команд таких несколько? То есть тогда, когда нужно последовательно выполнять команду за командой. Очевидно, графический интерфейс для такой задачи окажется сильно перегруженным. И тем более сложным, чем больше команд потребуется выполнить.

    Вторая причина неповоротливости GUI – модификация любого алгоритма потребует значительных модификаций оконного интерфейса, разработка и сопровождение которых отнюдь не дешевы. Именно поэтому интерфейс консоли не потерял своей актуальности. Одежка из окошек хороша для тех задач, алгоритмы которых не модифицируются слишком часто и не носят характер batch-потоков исполнения.

    Для других же задач, вроде последовательной обработки большого числа файлов без вмешательства пользователя, гораздо лучше подойдут командные файлы. Ранние языки программирования, типа Cobol и Rexx, исповедовали именно эту идеологию. Впоследствии она была перенесена в концепцию командных файлов ОС.

    Во всех ранних версиях Windows такие файлы имели расширение.bat и представляли собой обычные текстовые файлы с последовательным расположением командных инструкций. Сами команды могли иметь параметры, в том числе и вводимые пользователем в процессе исполнения. Синтаксис команд определялся каждой ОС по-своему. В Linux, например, имеется несколько очень мощных командных оболочек с существенно различающимся синтаксисом.

    PowerShell на смену «батникам»

    Со временем командные оболочки сильно эволюционировали. Процессору «батников» (.bat-файлов) DOS пришел на смену командный процессор 4DOS, в Windows происходили аналогичные изменения – перечень исполнимых инструкций значительно расширился, приобретая сходство с современными скриптовыми языками программирования.

    Однако ориентация таких систем не изменилась – все они как были, так и оставались инструментами системного администратора или (в редких случаях) продвинутого пользователя.

    Также у них появились конкуренты, наподобие скриптов JScript и VBScript, функционирующих на базе языковой машины WHS(Windows Script Host). Казалось бы, эволюция «батников» зашла в тупик, и они должны были вымереть, как динозавры. Но не тут то было.

    Осенью 2003-го года разработчиками Microsoft был анонсирован новый командный процессор под именем Windows PowerShell с радикально переработанной концепцией и синтаксисом. Причем движком для него выступала платформа.Net Framework, а это означало, ни много ни мало, доступ из скрипта к огромной копилке возможностей этого фреймворка. В PowerShell команды перестали быть простыми текстовыми инструкциями, а превратились в классы.

    Net со всеми вытекающими из этого последствиями (что такое классы в современном программировании, думается, объяснять не нужно) и получили новое имя – «командлеты». Можно еще много рассуждать на тему отличий оболочки PowerShell от прочих скриптовых оболочек, но лучше предложить краткий перечень ее функций, чтобы вы поняли, что такое PS.

    Функциональность PowerShell

    Функциональность оболочки такова:

    • Командлеты предоставляют интерфейс для работы с сущностями из следующего списка: реестром, процессами, журналом, службами, WMI. То есть идеально подходят для нужд системного администратора.
    • PowerShell – это развитый скриптовый язык программирования на основе объектной парадигмы.
    • Унифицированный дизайн языка PowerShell на концепции хранилищ системных данных с единообразной структурой. Для программиста это означает возможность использовать одни и те же командлеты при работе с различными хранилищами.
    • В язык включена мощная система навигации по файловой системе и системным хранилищам. Причем навигация по тем и другим осуществляется одинаково.
    • Ориентация на объекты означает не только инкапсуляцию различных методов в одном объекте, но и возможность сохранять экземпляры объектов на диске или в СУБД.
    • Интерфейс PowerShell может быть легко расширен разработчиком, что означает возможность создавать целые программные пакеты PoweShell для решения специальных прикладных задач системного программирования.

    Пользователи, находящиеся в процессе изучения начального экрана Windows 8.1 или Windows 7, нередко запускают в работу совсем незнакомые им приложения. Одним из таковых является Power Shell – продукт от компании Microsoft.

    Что такое Power Shell

    Если кто-то упорно трудился над написанием кода продукта, значит, он кому-то нужен, для кого-то предназначен. Скорее всего, обычный пользователь сможет извлечь минимальную пользу от наличия этого софта, а вот для системного администратора данная программа – отличный помощник.

    Power Shell – это современная стандартизированная оболочка командной строки, открывающая доступ к более гибкому управлению компьютером, функционирующим на базе Windows. По сути – та же командная строка, но возможности гораздо шире.

    Функционал инструмента администрирования

    Функционал софта внушителен. С его помощью можно управлять службами, аккаунтами, хранилищами файлов, процессами и даже серверами. Оболочка открывает доступ к работе с объектами COM, NET, XML, запуску внешних команд, созданию и выполнению собственных сценариев, проделыванию иных операций.

    Оболочка Power Shell имеет собственный набор команд, как и консоль CMD, называемых командлетами. Синтаксис языка, определения командлетов и их параметров в этой программе отличается от привычного, хотя утилита способна распознавать многие команды CMD.

    Прекрасно понимаемые Power Shell команды вроде cd, dir, copy и им подобные в этой оболочке являются псевдонимами или, как принято говорить, алиасами, служащими просто для удобства. Пример: команда dir, вводимая пользователем с целью просмотра файловой системы, соответствует командлету Get-ChildItem.

    Как разобраться в программе

    Человеку, незнакомому с основами командной строки, постигнуть тонкости работы с утилитой будет непросто. К сожалению, простых и понятных справочников по данной теме немного.

    Решаясь начать изучение скриптового языка Power Shell, целесообразно ознакомиться с руководством, созданным Франком Кохом, или обратиться к справочной системе самой программы. Последняя является довольно мощной, с большим количеством конкретных примеров. Основная информация здесь откроется для просмотра после ввода командлета Get-Help.