Программирование shell для windows

Справочник программистов Windows PowerShell’s Windows PowerShell Programmer’s Guide

Руководство программиста нацелено на разработчиков, заинтересованных в предоставлении среды управления командной строки для системных администраторов. This programmer’s guide is targeted at developers who are interested in providing a command-line management environment for system administrators. Windows PowerShell предоставляет простой способ создания команд управления, предоставляющих объекты .NET, позволяя Windows PowerShell выполнять большую часть работы за вас. Windows PowerShell provides a simple way for you to build management commands that expose .NET objects, while allowing Windows PowerShell to do most of the work for you.

В традиционной разработке команд необходимо написать средство синтаксического анализа параметров, связыватель параметров, фильтры и все остальные функциональные возможности, предоставляемые каждой командой. In traditional command development, you are required to write a parameter parser, a parameter binder, filters, and all other functionality exposed by each command. Windows PowerShell предоставляет следующие средства для упрощения написания команд: Windows PowerShell provides the following to make it easy for you to write commands:

Мощная среда выполнения Windows PowerShell (механизм выполнения) с собственным средством синтаксического анализа и механизм для автоматической привязки параметров команды. A powerful Windows PowerShell runtime (execution engine) with its own parser and a mechanism for automatically binding command parameters.

Служебные программы для форматирования и отображения результатов команд с помощью интерпретатора командной строки (CLI). Utilities for formatting and displaying command results using a command line interpreter (CLI).

Поддержка высокого уровня функциональности (с помощью поставщиков Windows PowerShell), которые упрощают доступ к сохраненным данным. Support for high levels of functionality (through Windows PowerShell providers) that make it easy to access stored data.

По незначительным затратам объект .NET можно представить с помощью обширной команды или набора команд, которые предлагают администратору полный интерфейс командной строки. At little cost, you can represent a .NET object by a rich command or set of commands that will offer a complete command-line experience to the administrator.

В следующем разделе рассматриваются основные понятия и термины Windows PowerShell. The next section covers the key Windows PowerShell concepts and terms. Ознакомьтесь с этими понятиями и терминами перед началом разработки. Familiarize yourself with these concepts and terms before starting development.

Сведения о Windows PowerShell About Windows PowerShell

Windows PowerShell определяет несколько типов команд, которые можно использовать в разработке. Windows PowerShell defines several types of commands that you can use in development. Эти команды включают в себя функции, фильтры, скрипты, псевдонимы и исполняемые объекты (приложения). These commands include: functions, filters, scripts, aliases, and executables (applications). Основной тип команды, описанный в этом разделе, — это простая небольшая команда, называемая «командлетом». The main command type discussed in this guide is a simple, small command called a «cmdlet». Windows PowerShell предоставляет набор командлетов и полностью поддерживает настройку командлетов в соответствии с вашей средой. Windows PowerShell furnishes a set of cmdlets and fully supports cmdlet customization to suit your environment. Среда выполнения Windows PowerShell обрабатывает все типы команд точно так же, как командлеты, используя конвейеры. The Windows PowerShell runtime processes all command types just as it does cmdlets, using pipelines.

В дополнение к командам Windows PowerShell поддерживает различные настраиваемые поставщики Windows PowerShell, которые делают доступными определенные наборы командлетов. In addition to commands, Windows PowerShell supports various customizable Windows PowerShell providers that make available specific sets of cmdlets. Оболочка работает в ведущем приложении Windows PowerShell (Windows PowerShell.exe), но оно также доступно из пользовательского ведущего приложения, которое можно разрабатывать для удовлетворения конкретных требований. The shell operates within the Windows PowerShell-provided host application (Windows PowerShell.exe), but it is equally accessible from a custom host application that you can develop to meet specific requirements. Дополнительные сведения см. в разделе как работает Windows PowerShell. For more information, see How Windows PowerShell Works.

Читайте также:  C windows forms задержка

Командлеты Windows PowerShell Windows PowerShell Cmdlets

Командлет — это упрощенная команда, используемая в среде Windows PowerShell. A cmdlet is a lightweight command that is used in the Windows PowerShell environment. Среда выполнения Windows PowerShell вызывает эти командлеты в контексте сценариев автоматизации, предоставленных в командной строке, а среда выполнения Windows PowerShell также вызывает их программно с помощью API-интерфейсов Windows PowerShell. The Windows PowerShell runtime invokes these cmdlets within the context of automation scripts that are provided at the command line, and the Windows PowerShell runtime also invokes them programmatically through Windows PowerShell APIs.

Дополнительные сведения о командлетах см. в разделе Написание командлета Windows PowerShell. For more information about cmdlets, see Writing a Windows PowerShell Cmdlet.

Поставщики Windows PowerShell Windows PowerShell Providers

При выполнении административных задач пользователю может потребоваться проверить данные, хранящиеся в хранилище данных (например, файловую систему, реестр Windows или хранилище сертификатов). In performing administrative tasks, the user may need to examine data stored in a data store (for example, the file system, the Windows Registry, or a certificate store). Чтобы упростить эти операции, Windows PowerShell определяет модуль, называемый поставщиком Windows PowerShell, который можно использовать для доступа к конкретному хранилищу данных, такому как реестр Windows. To make these operations easier, Windows PowerShell defines a module called a Windows PowerShell provider that can be used to access a specific data store, such as the Windows Registry. Каждый поставщик поддерживает набор связанных командлетов для предоставления пользователю симметричного представления данных в хранилище. Each provider supports a set of related cmdlets to give the user a symmetrical view of the data in the store.

Windows PowerShell предоставляет несколько поставщиков Windows PowerShell по умолчанию. Windows PowerShell provides several default Windows PowerShell providers. Например, поставщик реестра поддерживает навигацию и обработку реестра Windows. For example, the Registry provider supports navigation and manipulation of the Windows Registry. Разделы реестра представлены как элементы, а значения реестра обрабатываются как свойства. Registry keys are represented as items, and registry values are treated as properties.

Если вы предоставляете хранилище данных, к которому пользователю потребуется доступ, вам может потребоваться написать собственный поставщик Windows PowerShell, как описано в разделе Создание поставщиков Windows PowerShell. If you expose a data store that the user will need to access, you might need to write your own Windows PowerShell provider, as described in Creating Windows PowerShell Providers. Дополнительные сведения о Абаутвиндовсх поставщиков PowerShell см. в статье как работает Windows PowerShell. For more information aboutWindows PowerShell providers, see How Windows PowerShell Works.

Ведущее приложение Host Application

Windows PowerShell включает ведущее приложение по умолчанию powershell.exe — консольное приложение, взаимодействующее с пользователем и размещающий среду выполнения Windows PowerShell с помощью окна консоли. Windows PowerShell includes the default host application powershell.exe, which is a console application that interacts with the user and hosts the Windows PowerShell runtime using a console window.

Только редко приходится создавать собственное ведущее приложение для Windows PowerShell, хотя Настройка поддерживается. Only rarely will you need to write your own host application for Windows PowerShell, although customization is supported. Один из случаев, когда вам может потребоваться ваше собственное приложение, — это потребность в ПОЛЬЗОВАТЕЛЬСКОМ интерфейсе, который более широк, чем интерфейс, предоставленный ведущим приложением по умолчанию. One case in which you might need your own application is when you have a requirement for a GUI interface that is richer than the interface provided by the default host application. Вам также может потребоваться пользовательское приложение при создании базового графического интерфейса пользователя в командной строке. You might also want a custom application when you are basing your GUI on the command line. Дополнительные сведения см. в разделе Создание ведущего приложения Windows PowerShell. For more information, see How to Create a Windows PowerShell Host Application.

Читайте также:  Не реагирует mac os

Среда выполнения Windows PowerShell Windows PowerShell Runtime

Среда выполнения Windows PowerShell — это подсистема выполнения, реализующая обработку команд. The Windows PowerShell runtime is the execution engine that implements command processing. Он включает классы, предоставляющие интерфейс между ведущим приложением и командами и поставщиками Windows PowerShell. It includes the classes that provide the interface between the host application and Windows PowerShell commands and providers. Среда выполнения Windows PowerShell реализуется как объект пространства выполнения для текущего сеанса Windows PowerShell, который является рабочей средой, в которой выполняется оболочка и команды. The Windows PowerShell runtime is implemented as a runspace object for the current Windows PowerShell session, which is the operational environment in which the shell and the commands execute. Сведения о работе см. в статье как работает Windows PowerShell. For operational details, see How Windows PowerShell Works.

Язык Windows PowerShell Windows PowerShell Language

Язык Windows PowerShell предоставляет функции и механизмы создания скриптов для вызова команд. The Windows PowerShell language provides scripting functions and mechanisms to invoke commands. Полные сведения о сценариях см. в справочнике по языку Windows PowerShell, поставляемому с Windows PowerShell. For complete scripting information, see the Windows PowerShell Language Reference shipped with Windows PowerShell.

Расширенная система типов (ETS) Extended Type System (ETS)

Windows PowerShell предоставляет доступ к различным объектам, таким как .NET и объекты XML. Windows PowerShell provides access to a variety of different objects, such as .NET and XML objects. Как следствие, чтобы представить общую абстракцию для всех типов объектов, оболочка использует систему расширенных типов (ETS). As a consequence, to present a common abstraction for all object types the shell uses its extended type system (ETS). Большинство ETS функций прозрачны для пользователя, но сценарий или разработчик .NET использует его в следующих целях: Most ETS functionality is transparent to the user, but the script or .NET developer uses it for the following purposes:

Просмотр подмножества элементов конкретных объектов. Viewing a subset of the members of specific objects. Windows PowerShell предоставляет «адаптированное» представление нескольких конкретных типов объектов. Windows PowerShell provides an «adapted» view of several specific object types.

Добавление элементов в существующие объекты. Adding members to existing objects.

Доступ к сериализованным объектам. Access to serialized objects.

Написание настраиваемых объектов. Writing customized objects.

С помощью ETS можно создать гибкие новые типы, совместимые с языком Windows PowerShell. Using ETS, you can create flexible new «types» that are compatible with the Windows PowerShell language. Если вы являетесь разработчиком .NET, то можете работать с объектами, используя ту же семантику, что и язык Windows PowerShell, например, чтобы определить, имеет ли объект значение true . If you are a .NET developer, you are able to work with objects using the same semantics as the Windows PowerShell language applies to scripting, for example, to determine if an object evaluates to true .

Дополнительные сведения о ETS и использовании объектов в Windows PowerShell см. в разделе Основные понятия об объектах Windows PowerShell. For more information about ETS and how Windows PowerShell uses objects, see Windows PowerShell Object Concepts.

Программирование для Windows PowerShell Programming for Windows PowerShell

Windows PowerShell определяет свой код для команд, поставщиков и других программных модулей с помощью .NET Framework. Windows PowerShell defines its code for commands, providers, and other program modules using the .NET Framework. Вы не ограничены использованием Microsoft Visual Studio при создании настроенных модулей для Windows PowerShell, хотя в этом средстве известно, что примеры, приведенные в этом разделе, будут выполняться в этом инструменте. You are not confined to the use of Microsoft Visual Studio in creating customized modules for Windows PowerShell, although the samples provided in this guide are known to run in this tool. Можно использовать любой язык .NET, который поддерживает наследование классов и использование атрибутов. You can use any .NET language that supports class inheritance and the use of attributes. В некоторых случаях API Windows PowerShell требует, чтобы язык программирования мог получить доступ к универсальным типам. In some cases, Windows PowerShell APIs require the programming language to be able to access generic types.

Читайте также:  Open the windows task manager

Справочник программиста Programmer’s Reference

Справочные сведения о разработке для Windows PowerShell см. в разделе Windows POWERSHELL SDK. For reference when developing for Windows PowerShell, see the Windows PowerShell SDK.

начало работы с помощью Windows PowerShell Getting Started Using Windows PowerShell

Дополнительные сведения о начале работы с оболочкой Windows PowerShell см. в Начало работы с Windows PowerShell, поставляемой с Windows PowerShell. For more information about starting to use the Windows PowerShell shell, see the Getting Started with Windows PowerShell shipped with Windows PowerShell. В качестве основы использования командлета также предоставляется краткий справочник по документу с тремя сгибами. A Quick Reference tri-fold document is also supplied as a primer for cmdlet use.

Руководство по Windows PowerShell для начинающих

Руководство по Windows PowerShell для начинающих

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

PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий широкие возможности для конфигурирования операционных систем семейства MS Windows. Он предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов.

Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню. ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.

Среда разработки Windows PowerShell ISE

Написание и запуск скриптов

Скрипты сохраняются в виде файлов с расширением .ps1 . Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».

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

  • Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
  • AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
  • RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
  • Unrestricted — можно запускать любые скрипты.

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy :

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

Командлеты

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

  • существуют системные, пользовательские и опциональные командлеты;
  • результатом выполнения командлета будет объект или массив объектов;
  • командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
  • командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser , get-aduser и gEt-AdUsEr ;
  • в качестве разделителя используется символ ; .

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

  • Get-Process — отобразить текущие процессы, запущенные на компьютере;
  • Get-Service — отобразить список служб и их статус;
  • Get-Content — отобразить содержимое указанного файла, например Get-Content C:\Windows\System32\drivers\etc\hosts .

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category. Запомните эту команду — она крайне важна для тех, кто изучает PowerShell с нуля, так как помогает быстрее начать ориентироваться в его возможностях.

Результат выполнения команды Get-Help-Category

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

Параметры

У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W . Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member .

Оцените статью