Основы Windows PowerShell для начинающих

ПК и ноутбуки

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

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

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

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

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

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

Технология Windows Script Host позволяет выполнять все административные задачи, которые делает командная строка, включая их автоматизацию путем написания WSH-скриптов, но здесь уже можно использовать полноценные языки программирования (VBScript и JScript), т.е можно реализовать сложную логику и алгоритмы.

Кроме того, с помощью WSH мы управляем программными продуктами через объектный интерфейс, иными словами, Windows Script Host гораздо «круче», чем командная строка.

Но эта технология так и не стала идеальным средством управления и автоматизации этого управления для системных администраторов, так как Windows Script Host требовал знания вышеперечисленных языков программирования, что на самом деле избыточно для системных администраторов.

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

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

Что такое Windows PowerShell?

Скриншот 1

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

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

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

С помощью Windows PowerShell вы можете:

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

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

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

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

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

Получить помощь Получить команду

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

Get-Help Get-Command -Примеры

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

Заметка! Бесплатная система мониторинга ИТ-инфраструктуры.

Как запустить Windows PowerShell?

Windows PowerShell — это инструмент, который уже встроен в систему. Если у вас не «урезанная» операционка, то она уже есть в компе. «Система со скинами» — это операционная система, которой «манипулируют» опытные пользователи. То есть убрали из ОС все лишнее, чтобы было «полегче». Как правило, «обрезанные» системы представляют собой пиратские копии Windows.

Если у вас обычная система, запустить Windows PowerShell очень просто. Воспользуйтесь любым удобным способом:

  1. Через инструмент «Выполнить». Откройте меню «Выполнить» и введите в него «powershell». Вы можете использовать более «продвинутую» версию «PowerShell ISE». Для этого можно сразу набрать команду «PowerShell ISE». Версия «ISE» более предпочтительна, так как имеет больше возможностей и более удобна.
  2. Через меню пуск. Откройте меню «Пуск» и пройдите до самого низа, где находятся программы с буквой «W». Найдите папку «Windows PowerShell» и выберите подходящую вам программу. Опять же, это может быть «чистая» «Windows PowerShell» или «Windows PowerShell ISE».
  3. Вы также можете использовать диспетчер задач или проводник для запуска Windows PowerShell. Вы можете запустить программу прямо из папки на диске «С». Но это все более сложные способы, первые два гораздо проще и легче, так что используйте их.

Как используется программа Windows PowerShell?

В Windows PowerShell есть удобный инструмент под названием «командлеты». По сути, это функциональные команды, сформированные по принципу «Действия-Объекты». Например, если вам нужна помощь с документацией, вы можете использовать команду «Get-Help». Взамен вы получите документацию по использованию программы Windows PowerShell.

Глагол «Get» означает «получить», а в контексте программы Windows PowerShell означает «показать», но есть и другие глаголы, образующие команды. Например:

  • «Добавить» — «добавить»;
  • «Очистить» — «очистить»;
  • «Активировать» — «подключить»;
  • «Отключить» — «отключить»;
  • «Новый» — «создать»;
  • «Удалить» — «удалить»;
  • «установить» — «установить»;
  • «Пуск» — «активировать»;
  • «Стоп» — «стоп»;
  • «Экспорт» — «экспорт»;
  • «Импорт» — «импорт».

Команды функций чувствительны к регистру, т е. «Start-Script» — это то же самое, что и «start-script». Если вам нужно ввести сразу несколько команд, они разделяются «точкой с запятой», например: «Старт-Скрипт; экспорт-файл».

Внутри Windows PowerShell скрыто множество функциональных команд. Те из них, которые часто используются пользователями, комплектуются «сокращенными» командами — псевдонимами. Например, вместо «Get-Help» можно просто ввести «help», а вместо «Add-Content» — «ac». Другими словами, псевдонимы — это одинаковые синонимы, то есть «Add-Content» и «ac» выполняют одно и то же действие, но пишутся по-разному.

Весь список «синонимов» можно отобразить прямо в Windows PowerShell, если ввести команду «Get-Alias».

Команды могут иметь свои собственные аргументы. Например, если вам нужно остановить определенный процесс в системе, вы не можете просто набрать «Остановить процесс». Вы должны указать, какой процесс вы хотите остановить. Хорошо, если вы знаете имя процесса. Если вы не знаете точное имя процесса, вы можете найти все запущенные процессы в системе с помощью команды «Get-Process».

После этой команды вы увидите список всех запущенных и остановленных процессов. Найдите имя процесса, который вы хотите остановить, и введите следующую команду: «Остановить процесс {Имя процесса}».

Windows PowerShell: скрипты

Команды-функции — удобный инструмент, но Windows PowerShell интересна тем, что может автоматизировать настройку системы Windows или серверов с помощью сценариев.

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

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

Политика сценариев доступна в самой программе Windows PowerShell при вводе команды «Get-ExecutionPolicy».

Версии Windows PowerShell

Первая версия PowerShell 1.0 появилась 14 ноября 2006 г и была выпущена в виде отдельного дистрибутива, который можно было установить на следующие версии операционных систем Windows: Windows XP с пакетом обновления 2, Windows Server 2003 с пакетом обновления 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 Виндовс 10, Виндовс Сервер 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

Скриншот 2

Заметка! ТОП-7 популярных языков программирования.

Снимок экрана PowerShell в Windows Server 2016

Скриншот 3

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

Командлет — это команда Windows PowerShell, которая позволяет взаимодействовать с объектами операционной системы и управлять ими.

Эти команды являются частью языка PowerShell. Командлеты построены по принципу «Глагол-существительное», разделенные дефисом (-); иными словами, мы сначала указываем, что делать, а через дефис — над чем. Например, командлет Get-Help, где Get — глагол, означающий «Получить», а Help — существительное «Справка» в контексте PowerShell «Show — Help».

Командлеты PowerShell возвращают результаты в виде объектов, что является одним из основных отличий от командной строки Windows, где команды возвращают только текст на экран.

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

  • Добавить — добавить данные;
  • Ясно — ясно;
  • Активировать — активировать;
  • Отключить — выключить;
  • Новый — создать;
  • Удалить — удалить;
  • Установить — установить;
  • Старт – старт;
  • Стоп — стоп;
  • Экспорт — экспорт;
  • Импорт — импорт;
  • И многое другое.

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

Командлет Get-Command -CommandType

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

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

Скриншот 4

Команда

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

Скриншот 5

Команда

Get-Command — служба существительных

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

Конвейер в PowerShell

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

Конвейер — это передача результата одного командлета через вертикальную черту (|) другому командлету.

При этом, как вы помните, командлеты в PowerShell работают с объектами и возвращают объекты, соответственно по конвейеру передаются и объекты.

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

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

Скриншот 6

Команда

Get-ChildItem -Path «C:WindowsSystem32» -File | Длина объекта сортировки — по убыванию | Выбрать объект — Первый 1

Где,

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

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

Читайте также: Как отключить цифровую подпись драйверов в Windows 7

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

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

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

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

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

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

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

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

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

Start-Job {Get-Service}

Смотрим список задач, работающих в фоне

Получить работу

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

Получить задание1

Скриншот 7

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

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

Основные команды PowerShell

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

Получить помощь

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

Например, чтобы увидеть, как работает Get-Process, введите:

PS C: > Get-Help -Name Get-ProcessPS C: > Set-Execution Policy

Как упоминалось ранее в этом руководстве, у Microsoft есть политика ограниченного выполнения, которая запрещает выполнение сценариев в PowerShell, если вы не измените ее. При настройке политики выполнения у вас есть четыре варианта на выбор:

  • Restricted — политика выполнения по умолчанию, которая останавливает выполнение скрипта.
  • All Signed — запускает сценарии, если они подписаны доверенным издателем
  • Внешняя подпись — позволяет запускать сценарии, созданные локально
  • безлимитный — Политика без ограничений на выполнение скрипта

PS C:>Get-Execution Policy

Если вы используете PowerShell, вы не всегда сможете работать на знакомом вам сервере. Запустив команду Get-Execution Policy, вы увидите, какая политика активна на сервере перед запуском нового скрипта. Если вы увидите, что рассматриваемый сервер работает с ограниченной политикой, вы можете реализовать команду Set-ExecutionPolicy, чтобы изменить ее.

Get-Service

Одной из наиболее важных команд является Get-Service, которая предоставляет пользователю список всех служб, установленных в системе, как запущенных, так и остановленных. Этим командлетом можно управлять с помощью определенных имен служб или объектов.

Например, если вы наберете PS C:> Get-Service, вам будет показан список всех служб на компьютере, их статусы и отображаемые имена.

Чтобы использовать эту команду для получения определенных служб, введите: PS C:Get-Service «WMI*», чтобы получить все службы, начинающиеся с WMI..

Если вы хотите ограничить вывод активными службами на вашем компьютере, введите следующую команду:

PS C:Get-Service | Где объект {$_. Статус -eq «Выполняется»}

ConvertTo-HTML

При использовании PowerShell вы можете создать отчет об увиденной информации. Один из лучших способов сделать это — использовать команду ConvertTo-HTML. Этот командлет позволяет создавать отчеты с таблицами и цветами, которые помогают визуализировать сложные данные. Просто выберите объект и добавьте его в команду. Например, вы можете ввести:

Получить-PSDrive | Преобразовать в HTML

Это возвращает массу информации, поэтому рекомендуется ограничить ее файлом с помощью команды Out-File. Лучшая альтернативная команда:

Получить PSD диск | Преобразовать в HTML | Выходной файл — FilePath PSDrives.html

Затем будет создан HTML-файл в виде таблицы. Например:

hTML-таблица powershell

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

Экспорт-CSV (и Get-Сервис)

Команда «Экспорт CSV» не менее важна для повышения наглядности. Это позволяет экспортировать данные PowerShell в файл CSV. По сути, эта команда создает CSV-файл, в который компилируются все объекты, выбранные вами в PowerShell. Каждый объект имеет свою собственную строку или строки в CSV-файле.

Эта команда в основном используется для создания электронных таблиц и обмена данными с внешними программами.

Чтобы использовать эту команду, введите:

PS C:> Get-Service | Экспорт CSV c:service.csv

Важно помнить, что вам не нужно форматировать объекты перед запуском команды «Экспорт CSV». Это связано с тем, что при форматировании объектов в CSV-файл помещаются только отформатированные свойства, а не сами исходные объекты. Если вы хотите отправить определенные свойства объекта в CSV-файл, вы должны использовать командлет Select-Object.

Чтобы использовать командлет Select-Object, введите:

PS C:> Get-Service | Выбор имени объекта, статус | Экспорт CSV c:Service.csv

Get-Process

Если вы хотите увидеть все процессы, запущенные в вашей системе, команда Get-Process очень важна. Чтобы получить список всех активных процессов на вашем компьютере, введите:

PS C:Get-процесс

Обратите внимание, что если вы не укажете никаких параметров, вы получите обзор всех активных процессов на вашем компьютере. Чтобы выбрать конкретный процесс, сузьте результаты по имени процесса или идентификатору процесса и объедините его с командлетом Format-List, который отображает все доступные свойства. Например:

PS C:Get-Process Windowsrd, Проводник | Список форматов *

Это дает вам полный контроль над всеми активными процессами.

Get-EventLog

получить командлет безопасности журнала событий

Если вы когда-нибудь захотите получить доступ к журналам событий вашего компьютера (или журналам на удаленных компьютерах) при использовании PowerShell, вам понадобится команда Get-EventLog. Этот командлет работает только с классическими журналами событий, поэтому вам потребуется команда Get-WinEvent для журналов более поздних версий, чем Windows Vista.

Чтобы запустить команду журнала событий, введите:

PS C:>Get-EventLog -List

Это отобразит все журналы событий на вашем компьютере.

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

PS C: > Get-EventLog -LogName System -EntryType Error

Если вы хотите получать журналы событий с нескольких компьютеров, укажите, какие устройства вы хотите просматривать (обозначены как «Сервер1» и «Сервер2» ниже). Например:

PS C:>Get-EventLog -LogName «Windows PowerShell» -Имя компьютера «локальный компьютер», «Server1», «Server2».

Параметры, которые вы можете использовать для поиска в журналах событий:

  • После — пользователь указывает дату и время, и командлет определяет события, которые произошли после
  • AsBaseObject — возвращает System.Diagnostics.EventLogEntry для каждого события
  • AsString — возвращает вывод в виде строк
  • До — пользователь указывает дату и время, и командлет находит события, которые произошли до этого
  • Имя компьютера — используется для идентификации удаленного компьютера
  • EntryType — указывает тип записи события (ошибка, сбой аудита, успех аудита, информация, предупреждение)
  • Метрика — указывает значения индекса, из которых командлет находит события
  • Список — предоставляет список журналов событий
  • Имя пользователя — указывает имена пользователей, связанные с этим событием

Stop-Process

Процесс остановки PowerShell

При использовании PowerShell процесс нередко зависает. В этом случае вы можете использовать Get-Process, чтобы получить имя проблемного процесса, а затем остановить его с помощью команды Stop-Process. Обычно вы завершаете процесс его именем. Например:

PS C:> Остановить процесс — Имя «Блокнот»

В этом примере пользователь вышел из Блокнота с помощью команды Stop-Process.

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

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

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

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

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

Введите -PSSession ServerName

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

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

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

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

Важно!

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

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

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

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

Set-ExecutionPolicy Remote Signed

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

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

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

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

Get-ChildItem Env:PSModulePath | Формат-таблица -Авторазмер

После того, как вы поместили написанный вами модуль в специальный каталог, вы можете получить доступ к своим функциям, как к обычным командам 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

Скриншот 8

Оцените статью
Интернет на телефонах
Adblock
detector