Командлеты powershell что это за программа

Содержание

1.4. Типы команд PowerShell

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

Первый тип – так называемые командлеты (cmdlet). Этот термин используется пока только внутри PowerShell. Командлет – аналог внутренней команды интерпретатора командной строки — представляет собой класс .NET, порожденный от базового класса Cmdlet; разрабатываются командлеты с помощью пакета PowerShell Software Developers Kit (SDK).

Единый базовый класс Cmdlet гарантирует совместимый синтаксис всех командлетов, а также автоматизирует анализ параметров командной строки и описание синтаксиса командлетов для встроенной справки. Командлеты рассматриваются в данной работе. С командами других типов можно ознакомиться, используя [1].

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

Основы Windows PowerShell (создание и запуск скриптов | установка версии 5.1 | PowerShell ISE)

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

Сценарий – это блок кода на языке PowerShell, хранящийся во внешнем файле с расширением ps1. Анализ синтаксиса сценария производится при каждом его запуске.

Последний тип команд – внешние исполняемые файлы, которые выполняются обычным образом операционной системой.

1.5. Имена и синтаксис командлетов

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

Команды Windows PowerShell следуют определенным правилам именования:

  • Команды Windows PowerShell состоят из глагола и существительного (всегда в единственном числе), разделенных тире. Глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено. Команды записываются на английском языке. Пример: Get-Help вызывает интерактивную справку по синтаксису Windows PowerShell.
  • Перед параметрами ставится символ «-». Например: Get-Help –Detailed.
  • В Windows PowerShell также включены псевдонимы многих известных команд. Это упрощает знакомство и использование Windows PowerShell. Пример: команды help (классический стиль Windows) и man (классический стиль Unix) работают так же, как и Get-Help.

Источник: studfile.net

8 важных команд powershell на Windows. Будь сильнее

Общие сведения о командлетах

Командлет — это упрощенная команда, используемая в среде PowerShell. Среда выполнения PowerShell вызывает эти командлеты в контексте скриптов автоматизации, предоставленных в командной строке. Среда выполнения PowerShell также вызывает их программно с помощью API-интерфейсов PowerShell.

Командлеты

Командлеты выполняют действие и обычно возвращают объект Microsoft .NET в следующую команду в конвейере. Командлет — это одна команда, которая участвует в семантике конвейера PowerShell. Сюда входят двоичные командлеты (C#), расширенные функции скриптов, CDXML и рабочие процессы.

В этой документации по пакету SDK описывается создание двоичных командлетов, написанных на языке C#. Дополнительные сведения о командлетах на основе сценариев см. в следующих статьях:

  • about_Functions_Advanced
  • about_Functions_CmdletBindingAttribute
  • about_Functions_Advanced_Methods

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

  • Объявите атрибут, который идентифицирует производный класс в качестве командлета.
  • Определите открытые свойства, снабженные атрибутами, которые определяют открытые свойства в качестве параметров командлета.
  • Переопределите один или несколько методов обработки ввода для обработки записей.

Сборку, содержащую класс, можно загрузить напрямую с помощью командлета Import-Module . также можно создать ведущее приложение, которое загружает сборку с помощью API System. Management. Automation. пространства выполнения. Initialsessionstate. Оба метода предоставляют программный и доступ командной строки к функциональности командлета.

Условия для командлетов

В документации по командлету PowerShell часто используются следующие термины:

Атрибут командлета

Атрибут .NET, используемый для объявления класса командлета в качестве командлета. Хотя PowerShell использует несколько других атрибутов, которые являются необязательными, атрибут командлета является обязательным. Дополнительные сведения об этом атрибуте см. в разделе объявление атрибута командлета.

Параметр командлета

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

Набор параметров

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

Динамический параметр

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

Методы обработки входных данных

Класс System. Management. Automation. командлет предоставляет следующие виртуальные методы, используемые для обработки записей. Все производные классы командлетов должны переопределять один или несколько первых трех методов:

  • System. Management. Automation. командлет. BeginProcessing: используется для предоставления необязательных одноразовых функций предварительной обработки для командлета.
  • System. Management. Automation. командлет. ProcessRecord: используется для предоставления функций обработки записей по записям для командлета. Метод System. Management. Automation. командлет. ProcessRecord может вызываться любое количество раз, в зависимости от входных данных командлета.
  • System. Management. Automation. командлет. EndProcessing: используется для предоставления необязательных одноразовых функций последующей обработки для командлета.
  • System. Management. Automation. командлет. StopProcessing: используется для остановки обработки при асинхронной остановке командлета пользователем (например, при нажатии клавиши CTRL + C ).

Дополнительные сведения об этих методах см. в разделе методы обработки входных данных командлета.

При реализации командлета необходимо переопределить хотя бы один из этих методов обработки ввода. Как правило, метод ProcessRecord () является переопределяемым методом, поскольку он вызывается для каждой записи, обрабатываемой командлетом. В отличие от этого, метод BeginProcessing () и метод EndProcessing () вызываются один раз для выполнения предварительной обработки или последующей обработки записей. Дополнительные сведения об этих методах см. в разделе методы обработки входных данных.

Функция ShouldProcess

PowerShell позволяет создавать командлеты, предлагающие пользователю отправить отзыв, прежде чем командлет вносит изменения в систему. Чтобы использовать эту функцию, командлет должен объявить, что он поддерживает эту ShouldProcess функцию при объявлении атрибута командлета, и командлет должен вызвать методы System. Management. Automation. командлет. ShouldProcess и System. Management. Automation. командлет.

ShouldContinue из метода обработки ввода. Дополнительные сведения о поддержке функций см. в ShouldProcess разделе запрос подтверждения.

Транзакция

Логическая группа команд, обрабатываемых как одна задача. Задача автоматически завершается ошибкой, если любая команда в группе завершается ошибкой, и пользователь может принять или отклонить действия, выполненные внутри транзакции. Чтобы принять участие в транзакции, командлет должен объявить, что он поддерживает транзакции при объявлении атрибута командлета. поддержка транзакций появилась в Windows PowerShell 2,0. Дополнительные сведения о транзакциях см. в разделе Поддержка транзакций.

Отличия командлетов от команд

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

  • Командлеты являются экземплярами классов .NET; они не являются изолированными исполняемыми файлами.
  • Командлеты можно создавать с помощью нескольких десятков строк кода.
  • Командлеты обычно не выполняют собственный синтаксический анализ, представление ошибок или форматирование выходных данных. Синтаксический анализ, представление ошибок и форматирование вывода обрабатываются средой выполнения PowerShell.
  • Командлеты обрабатывают входные объекты из конвейера, а не из потоков текста, а командлеты обычно доставляют объекты в конвейер в качестве выходных данных.
  • Командлеты ориентированы на записи, так как они обрабатывают один объект за раз.
Читайте также:
Что за программа deepface

Базовые классы командлетов

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

  • Большинство командлетов основаны на классах .NET, производных от базового класса System. Management. Automation. командлет . наследование от этого класса позволяет командлету использовать минимальный набор зависимостей от Windows PowerShell среды выполнения. Это имеет два преимущества. Первое преимущество заключается в том, что объекты командлетов меньше, и, скорее всего, изменения в среде выполнения PowerShell подвергаются меньшему. Второе преимущество заключается в том, что при необходимости можно напрямую создать экземпляр объекта командлета, а затем вызвать его напрямую, а не вызывать его через среду выполнения PowerShell.
  • Более сложные командлеты основаны на классах .NET, производных от базового класса System. Management. Automation. PSCmdlet . Наследование от этого класса обеспечивает гораздо больший доступ к среде выполнения PowerShell. Этот доступ позволяет командлету вызывать скрипты, получать доступ к поставщикам и получать доступ к текущему состоянию сеанса. (Для доступа к текущему состоянию сеанса вы получаете и устанавливаете переменные сеанса и настройки.) Однако наследование от этого класса увеличивает размер объекта командлета, и это означает, что командлет более тесно связан с текущей версией среды выполнения PowerShell.

Как правило, если вам не нужен расширенный доступ к среде выполнения PowerShell, необходимо создать производный от класса System. Management. Automation. командлет . Однако среда выполнения PowerShell имеет широкие возможности ведения журнала для выполнения командлетов.

Если модель аудита зависит от этого журнала, можно предотвратить выполнение командлета из другого командлета, производя от класса System. Management. Automation. PSCmdlet .

Атрибуты командлета

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

Имена командлетов

PowerShell использует пару имен глагол-и-существительное для командлетов Name. Например, включенный в PowerShell командлет Get-Command возвращает полный список всех командлетов, зарегистрированных в командной оболочке. Глагол здесь определяет действие, выполняемое командлетом, а существительное определяет ресурс, в котором он выполняет это действие.

Эти имена указываются при объявлении класса .NET в качестве командлета. Дополнительные сведения об объявлении класса .NET в качестве командлета см. в разделе объявление атрибута командлета.

Написание кода командлета

В этом документе представлены два способа определения способа написания кода командлета. Если вы предпочитаете Просмотреть код без подробного объяснения, см. примеры кода командлета. Если вы предпочитаете более подробное описание кода, см. статью учебник по процедурам Стоппрокили руководства селектстр .

Дополнительные сведения о рекомендациях по написанию командлетов см. в разделе рекомендации по разработке командлетов.

Источник: learn.microsoft.com

Введение в Windows PowerShell, что такое командлеты

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

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

Windows PowerShell предустановлен в системах Windows 7, 8, 8.1 и Windows Server 2008 R2, 2012 R2, а также может быть добавлен в Windows XP SP3, Vista и Windows Server 2003 SP2. Интерфейс PowerShell напоминает хорошо знакомый интерфейс командной строки.

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

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

Командлеты — это новый тип команд, встроенный в PowerShell. Команды этого типа компилируются в dll-библиотеки и подгружаются к процессу PowerShell во время его запуска. Сами по себе командлеты как приложения не запускаются.

Имена командлетов соответствуют шаблону «глагол-существительное». Глагол описывает действие, которое мы хотим совершить, а существительное — объект, над которым будет совершаться действие. Например, чтобы очистить экран консоли, требуется ввести команду Clear-Host . Вы можете просмотреть доступные команды, введя в консоли Get-Command .

Командлеты могут иметь параметры. В общем виде это выглядит так:

имя_командлета -параметр1 -параметр2 аргумент1 аргумент2

Аргументы это параметры не имеющие имен.

Как это работает? Например, у нас есть команда dir , которая выводит содержимое каталога.

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

Поиск займет немного больше времени, зато искомая книга будет найдена.

Имена параметров можно писать в сокращенном виде, что довольно удобно при повседневной работе с командной строкой. Сокращение должно быть понятно интерпритатору, т.е. не допускать двояких толкований. Например, параметр -recurse мы можем сократить до простого -r , а сокращение -filter до -f вызовет ошибку, т.к. есть еще параметр -force . В таком случае можно сократить -filter до -fi .

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

Источник: webistore.ru

Что такое Windows PowerShell и с чем его едят? Часть 1: основные возможности

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

Основные возможности

Разумеется Windows PowerShell — это в первую очередь командная оболочка с языком сценариев, изначально созданная на основе платформы .NET Framework, а позднее — на .NET Core. В отличие от принимающих и возвращающих текстовые данные оболочек, Windows PowerShell работает с классами .NET, у которых есть свойства и методы. PowerShell позволяет выполнять обычные команды, а также дает доступ к объектам COM, WMI и ADSI.

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

Windows PowerShell позволяет:

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

Оболочка и среда разработки

Существует Windows PowerShell в двух ипостасях: помимо эмулятора консоли с командной оболочкой есть интегрированная среда сценариев (Integrated Scripting Environment — ISE). Чтобы получить доступ к интерфейсу командной строки достаточно выбрать соответствующий ярлык в меню Windows или запустить powershell.exe из меню «Выполнить». На экране появится синее окошко, заметно отличающееся по возможностям от допотопного cmd.exe. Там есть автодополнение и другие фишки, привычные пользователям командных оболочек для Unix-систем.

Для работы с оболочкой нужно запомнить некоторые сочетания клавиш:

  • Стрелки вверх и вниз прокручивают историю для повтора ранее набранных команд;
  • Стрелка вправо в конце строки перенабирает предыдущую команду посимвольно;
  • Ctrl+Home удаляет набранный текст от позиции курсора до начала строки;
  • Ctrl+End удаляет текст от курсора до конца строки.

Windows PowerShell ISE является полноценной средой разработки с поддерживающим вкладки и подсветку синтаксиса редактором кода, конструктором команд, встроенным отладчиком и другими программистскими радостями. Если в редакторе среды разработки после имени команды написать знак дефис, вы получите в выпадающем списке все доступные параметры с указанием типа. Запустить PowerShell ISE можно либо через ярлык из системного меню, либо с помощью исполняемого файла powershell_ise.exe.

Командлеты

В Windows PowerShell появились т.н. командлеты (cmdlets). Это специализированные классы .NET, в которые заложена разнообразная функциональность. Именуются они по принципу «Действие-Объект» (или «Глагол-Существительное, если вам так больше нравится), а разделенная дефисом связка напоминает сказуемое и подлежащее в предложениях естественных языков. Например, Get-Help буквально означает «Получить-Помощь» или в контексте PowerShell: «Показать-Справку». По сути это аналог команды man в Unix-системах и мануалы в PowerShell нужно запрашивать именно так, а не вызывая командлеты с ключом —help или /. Не стоит забывать и об онлайн-документации по PowerShell: у Microsoft она достаточно подробная.

Читайте также:
Firefox для чего предназначена программа

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

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

Есть системные, пользовательские и опциональные командлеты: в результате выполнения все они возвращают объект или массив объектов. К регистру они не чувствительны, т.е. с точки зрения интерпретатора команд нет разницы между Get-Help и get-help. Для разделения используется символ ‘;’, но ставить его обязательно только если в одной строке выполняется несколько командлетов.

Командлеты Windows PowerShell группируются в модули (NetTCPIP, Hyper-V и т.д.), а для поиска по объекту и действию существует командлет Get-Command. Показать справку по нему можно так:

Get-Help Get-Command

По умолчанию команда отображает краткую справку, но в командлеты при необходимости передаются параметры (аргументы). С их помощью можно, например, получить детальную (параметр -Detailed) или полную (параметр -Full) справку, а также вывести на экран примеры (параметр -Examples):

Get-Help Get-Command -Examples

Справка в Windows PowerShell обновляется командлетом Update-Help. Если строка команд получается слишком длинной, аргументы командлета можно перенести на следующую, написав служебный символ ‘`’ и нажав Enter — просто закончить писать команду на одной строке и продолжить на другой не получится.

Ниже приведем несколько примеров распространенных командлетов:

Get-Process — показать запущенные в системе процессы;
Get-Service — показать службы и их статус;
Get-Content — вывести содержимое файла.

Для часто используемых командлетов и внешних утилит в Windows PowerShell есть короткие синонимы — алиасы (от англ. Alias). Например, dir — алиас Get-ChildItem. Есть в списке синонимов и аналоги команд из Unix-систем (ls, ps и т.д.), а командлет Get-Help вызывается командой help. Полный список синонимов можно посмотреть с помощью командлета Get-Alias:

Сценарии, функции, модули и язык PowerShell

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

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

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

Set-ExecutionPolicy RemoteSigned

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

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

В скрипт можно передавать параметры, делать их обязательными, а также задавать значения по умолчанию. Кроме того Windows PowerShell позволяет создать функции и вызывать их точно так же, как и командлеты: для этого используется конструкция Function и фигурные скобки. Сценарий с функциями называется модулем и имеет расширение .psm1. Модули должны храниться в каталогах, определенных в переменных окружения PowerShell. Посмотреть их можно при помощи следующей команды:

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

Конвейеры

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

Встроенные командлеты или пользовательские функции возвращают объекты или массивы объектов, а также могут получать их на входе. Как в Bourne shell и его многочисленных последователях, в PowerShell с помощью конвейера упрощается выполнение сложных задач.

Простейший пример конвейера выглядит так:

Get-Service | Sort-Object -property Status

Сначала выполняется командлет Get-Service, а потом все полученные им службы передаются на сортировку по свойству Status командлету Sort-Object. В какой именно аргумент передается результат работы предыдущего участка конвейера, зависит от его типа — обычно это InputObject. Подробнее этот вопрос будет рассматриваться в посвященной языку программирования PowerShell статье.

При желании цепочку можно продолжить и передать результат работы Sort-Object еще одному командлету (выполняться они будут слева направо). Кстати, пользователям Windows доступна и привычная всем юниксоидам конструкция для постраничного вывода:

Get-Service | Sort-Object -property Status | more

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

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

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

Для запуска фоновой задачи мы используем командлет Start-Job и в фигурных скобках указываем команду или набор команд:

Start-Job

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

Get-Job

Теперь покажем результат работы задания Job1:

Receive-Job Job1 | more

Всё довольно просто.

Удаленное выполнение команд

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

  • У многих командлетов есть параметр -ComputerName , но таким способом не получится, например, создать конвейер;
  • Командлет Enter-PSSession позволяет создать на удаленной машине интерактивный сеанс;
  • С помощью командлета Invoke-Command можно выполнять команды или сценарии на одном или нескольких удаленных компьютерах.

Версии PowerShell

С момента первого релиза в 2006 году PowerShell серьезно изменился. Инструмент доступен для множества систем, работающих на разных аппаратных платформах (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux и OS X. Последний релиз 6.2 выпущен 10 января 2018 года. Написанные для более ранних версий скрипты с высокой вероятностью будут работать в более поздних, а вот с обратным переносом могут возникнуть проблемы, поскольку за годы развития в PowerShell появилось большое количество новых командлетов. Узнать версию установленной на компьютере командной оболочки можно с помощью свойства PSVersion встроенной переменной $PSVersionTable:

$PSVersionTable.PSVersion

Также можно воспользоваться командлетом:

Get-Variable -Name PSVersionTable –ValueOnly

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

Итоги

Корпорации Microsoft удалось создать действительно мощную командную оболочку с удобной интегрированной средой для разработки скриптов. От привычных нам по миру Unix средств ее отличает глубокая интеграция с операционными системами семейства Windows, а также с программным обеспечением для них и платформой .NET Core. PowerShell можно назвать объектно ориентированной оболочкой, потому что командлеты и пользовательские функции возвращают объекты или массивы объектов и могут получать их на входе. Думаем, этим инструментом должны владеть все администраторы серверов на Windows: прошло время, когда они могли обойтись без командной строки. Продвинутая консольная оболочка особенно необходима на наших недорогих VPS, работающих под управлением Windows Server Core, но это уже совсем другая история.

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

Источник: temofeev.ru

Командлеты Powershell, которые улучшат ваши навыки администратора Windows

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

Читайте также:
Smartlogon что это за программа

Работа с Powershell

Есть два способа использования Powershell. Существует основное окно командной строки, которое используется для запуска команд или вызова предварительно написанных сценариев. Тогда есть ISE, который комбинирует окно CLI с базовой средой разработки. Используя это, вы можете писать и тестировать свои скрипты.

ISE имеет список команд с возможностью поиска, и вы можете использовать его окно терминала без открытия файла. Список команд позволяет вам составить вашу команду и вставить ее. Если вы занимаетесь более продвинутой разработкой, установите Microsoft Visual Studio Code. В коде включена поддержка управления версиями Git. и другие языки.

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

Основы: Get-Command, Get-Help, Get-Member

Все команды Powershell принимают форму глагола-существительного. Глаголы обычно бывают: Get, Set и New .

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

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

Использование командлета Get-Help с Get-Command показывает дополнительную информацию о командлете. Мы используем командлет со следующим синтаксисом:

Get-Help Get-Command

Затем вы увидите основную информацию о параметрах. Если вы хотите увидеть подробности параметра и некоторые примеры использования, добавьте параметр -Full.

Если вы хотите увидеть только примеры, вы можете запустить:

Get-Help Get-Command -Examples

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

Если вы хотите вывести файл справки в отдельное окно, вы можете использовать -ShowWindow . Итак, если вы запустите:

Get-Help Get-Command -ShowWindow

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

По мере того, как вы будете совершенствоваться с Powershell, вы обнаружите, что чаще используете Get-Member. Это простой способ увидеть, какие поля доступны из возвращенных данных, а также другие методы, которые вы можете запустить. Часто командлеты имеют параметр -Property, чтобы вы могли их вызывать.

Работа с файлами: Get-ChildItem, Remove-Item, Move-Item, Copy-Item

Теперь, когда у вас есть представление о том, как работают командлеты и как получить помощь, давайте внесем изменения. Вы можете получить содержимое любой папки с помощью команды Get-ChildItem . Например, вы можете получить файлы всего диска, используя букву диска. Войти:

Get-ChildItem E:

Что сокращенно от:

Get-ChildItem -Path E:

Когда вы запускаете эту команду, вы получаете список файлов с последним временем записи, размером в свойстве Length, Name и Mode. Режим — это атрибуты файла или папки. Возможные записи:

  • ReadOnly
  • скрытый
  • система
  • каталог
  • Архив
  • устройство
  • Обычный
  • временный
  • разрежённый файл
  • ReparsePoint
  • Сжатый
  • Не в сети
  • NotContentIndexed
  • Зашифрованные

Если вы хотите получить содержимое всех подкаталогов в пути, вы должны использовать параметр -Recurse . Итак, запустите:

Get-ChildItem -Path E: -Recurse

Ваши файлы затем выходят в виде отдельных списков для каждой папки в пути.

Снова добавьте -recurse, если вы тоже хотите все из подпапок.

Если вы хотите удалить файл, используйте:

Remove-Item -Path E:OldFile.txt

Чтобы пропустить подтверждение каждого файла, добавьте параметр -Confirm $ false (Powershell имеет две константы для логических значений: $ true и $ false). Чтобы принудительно удалить доступные только для чтения или скрытые файлы, используйте параметр -Force .

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

Move-Item -Path E:* -Destination C:FlashDriveArchive

Вы также можете назвать один файл в -Path, чтобы переместить только этот файл. Чтобы скопировать файл, а не переместить его, используйте тот же синтаксис с командлетом Copy-Item .

Мониторинг и работа с процессами и сервисами

Каждый пользователь Windows знает диспетчер задач Тем не менее, есть более быстрый способ увидеть текущие запущенные процессы из Powershell, Get-Process . Если вы хотите узнать, что означают все записи в этой таблице, передайте команду Get-Member . Введите командлет:

Get-Process | Get-Member

Get-member выводит список методов и свойств, связанных с Get-Process. Информация наверху — это то, что вас интересует. Вы видите, что различные типы памяти имеют псевдонимы.

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

Get-Process | Select-Object Product, NPM, CPU, Name, ID | Sort-Object CPU -Descending

(Подробнее о Select-Object и Sort-Object в следующем разделе.)

Теперь, когда у вас есть идентификатор из команды Get-Process, вы можете остановить его с помощью командлета Stop-Process. Поэтому, если вы обнаружите, что процесс Chrome поглощает все ваши ресурсы, найдите идентификатор в предыдущей команде. Затем запустите:

Stop-Process -ID 45960

Замените 49560 идентификатором вашего борова.

Используя путь к файлу, вы можете запустить процесс с помощью Powershell. Чтобы запустить Chrome, выполните следующую команду:

Start-Process -Filepath «C:Program Files (x86) GoogleChromeApplicationchrome.exe»

(Вы должны иметь кавычки вокруг пути к файлу из-за пробелов.) Параметр -ArgumentList позволяет передавать параметры командной строки в приложение. В случае Chrome вы можете принудительно запустить его в режиме инкогнито, используя флаг –incognito . Весь командлет:

Start-Process -Filepath «C:Program Files (x86) GoogleChromeApplicationchrome.exe» -ArgumentList «—incognito»

Вы можете делать большинство таких же вещей с помощью сервисов. . Get-Service показывает вам список всех служб, работающих на вашем компьютере. Как и в случае запуска и остановки служб, вы можете использовать Start-Service и Stop-Service .

Работа с данными: Sort-Object, Select-Object, Where-Object

Когда вы работаете с данными из командлета, это может не всегда соответствовать желаемому порядку. В этих случаях вы хотите использовать Sort-Object . Вы можете вызвать Sort-Object для созданной вами переменной, но в основном она используется для передачи другого командлета. Как и в примере выше, мы передаем вывод одного объекта другому и сортируем его. Давайте создадим массив из трех случайных чисел и передадим его в Sort-Object.

Все в скобках запускается первым. Создайте простой массив с:

$(Get-Random), $(Get-Random), $(Get-Random)

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

$(Get-Random), $(Get-Random), $(Get-Random) | Sort-Object

Командлет выводит числа от наименьшего к наибольшему, если вы хотите изменить его, добавьте -По убыванию .

При передаче командлетов в Get-Member свойств больше, чем вывод по умолчанию. Вы выбираете определенные свойства, используя Select-Object .

Как и Sort-Object, вы используете Select-Object с помощью командного командлета. Например, для генерации таблицы сервисов и использования их статуса:

Get-Service | Select-Object DisplayName, Status

Хотя вывод всех этих данных приятен, что, если вы хотите видеть только определенные данные? Get-ChildItem имеет некоторую встроенную фильтрацию, но большинство команд не имеют. В этих случаях вы используете Where-Object .

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

Get-Service | Where-Object Status -eq «Running»

Это -eq в сравнении является Powershell для = . В Powershell вы выполняете сравнения с буквенными комбинациями:

  • экв: равно
  • ne: не равно
  • lt: меньше чем
  • GT: больше чем
  • ge: больше или равно
  • le: меньше или равно
  • like: использовать как в сравнительных символах

Справка по форматированию: Format-Table и Format-List.

Для этих различных командлетов большая часть вывода была в табличных форматах. Это отображает данные в строках и столбцах с заголовками. Чтобы отобразить записи, перечисленные с их свойствами по отдельности, направьте командлет в Format-List .

Иногда у вас есть выход, который становится слишком широким для окна Powershell. Когда это происходит, Powershell принудительно выводит его в виде списка. Чтобы убедиться, что вы храните его в формате таблицы, передайте вывод в Format-Table .

От командной строки до сценариев: следующие шаги

Если вам удобнее, сценарии — это вопрос ввода командлетов. в текстовом файле и сохраняйте его. Если вы нервничаете из-за того, что пытаетесь писать сценарии, не надо. Microsoft имеет огромное количество документации по каждому командлету. Это больше, чем уже длинная справочная документация, поэтому обязательно ознакомьтесь с Technet [Больше не доступно].

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

Источник: gadgetshelp.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru