Что такое PowerShell? — PowerShell
- Чтение занимает 5 мин
В этой статье
PowerShell — это кроссплатформенная система для автоматизации задач и управления конфигурацией, состоящая из оболочки командной строки и языка сценариев.PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. В отличие от большинства оболочек, которые принимают и возвращают текст, PowerShell построена на основе общеязыковой среды выполнения (CLR) .NET и принимает и возвращает объекты .NET.Unlike most shells, which accept and return text, PowerShell is built on top of the .NET Common Language Runtime (CLR), and accepts and returns .
Выходные данные являются объектно-ориентированнымиOutput is object-based
В отличие от средств распространенных интерфейсов командной строки командлеты PowerShell предназначены для работы с объектами.Unlike traditional command-line interfaces, PowerShell cmdlets are designed to deal with objects. Объект — это не просто набор отображаемых на экране символов, а структурированные данные.An object is structured information that is more than just the string of characters appearing on the screen. Выходные данные команды всегда содержат дополнительную информацию, которую при необходимости можно использовать.Command output always carries extra information that you can use if you need it.
Если раньше вы использовали средства обработки текста для работы с данными, вы поймете, что в PowerShell они применяются иначе. If you’ve used text-processing tools to process data in the past, you’ll find that they behave differently when used in PowerShell. В большинстве случаев для получения определенных сведений средства обработки текста не нужны.In most cases, you don’t need text-processing tools to extract specific information. Стандартный синтаксис объекта PowerShell позволяет получить прямой доступ к фрагментам данных.You directly access portions of the data using standard PowerShell object syntax.
Семейство команд является расширяемымThe command family is extensible
Такие интерфейсы, как cmd.exe
, не позволяют расширять набор встроенных команд напрямую.Interfaces such as cmd.exe
don’t provide a way for you to directly extend the built-in command set. Вы можете создавать внешние программы командной строки, выполняемые в cmd.exe
.You can create external command-line tools that run in cmd.exe
. Но у этих внешних программ нет служб, таких как интеграция справки.
cmd.exe
не будет автоматически знать, что эти внешние программы являются действительными командами.cmd.exe
doesn’t automatically know that these external tools are valid commands.
Команды в PowerShell называются командлетами .The commands in PowerShell are known as cmdlets . Каждый командлет можно применять отдельно, но наиболее эффективным является их совместное использование для выполнения сложных задач.You can use each cmdlet separately, but their power is realized when you combine them to perform complex tasks. Как и многие другие оболочки, PowerShell предоставляет доступ к файловой системе на компьютере.Like many shells, PowerShell gives you access to the file system on the computer.
Вы можете создавать собственные командлеты и модули функций, используя сценарии или скомпилированный код.You can create your own cmdlet and function modules using compiled code or scripts. Модули могут добавлять командлеты и поставщики в оболочку.Modules can add cmdlets and providers to the shell. PowerShell также поддерживает сценарии, аналогичные сценариям оболочки UNIX и пакетным файлам
.PowerShell also supports scripts that are analogous to UNIX shell scripts and cmd.exe
batch files.
Поддержка псевдонимов команд.Support for command aliases
PowerShell поддерживает псевдонимы для вызова команд с помощью альтернативных имен.PowerShell supports aliases to refer to commands by alternate names. Благодаря наличию псевдонимов пользователи с опытом работы с другими оболочками могут использовать уже известные им распространенные имена команд для выполнения схожих операций в PowerShell.Aliasing allows users with experience in other shells to use common command names that they already know for similar operations in PowerShell.
Механизм псевдонимов заключается в связывании нового имени с определенной командой.Aliasing associates a new name with another command. Например, в PowerShell есть внутренняя функция с именем Clear-Host
, которая очищает командное окно.For example, PowerShell has an internal function named Clear-Host
that clears the output window. Вы можете ввести в командной строке псевдоним
или clear
.You can type either the cls
or clear
alias at a command prompt. PowerShell интерпретирует эти псевдонимы и запускает функцию Clear-Host
.PowerShell interprets these aliases and runs the Clear-Host
function.
Это помогает пользователям изучать PowerShell.This feature helps users to learn PowerShell. Большинство пользователей cmd.exe
и Unix применяют большой репертуар команд, которые они уже помнят наизусть.First, most cmd.exe
and Unix users have a large repertoire of commands that users already know by name.
cmd.exe
, вы можете по привычке ввести команду
cls
для очистки экрана.If you have used cmd.exe
for years, you might reflexively type the cls
command to clear the screen. Если псевдоним для Clear-Host
не настроен, вы получите сообщение об ошибке и не будете знать, как очистить экран.Without the alias for Clear-Host
, you receive an error message and won’t know what to do to clear the output.
PowerShell обрабатывает ввод и отображение данных в консолиPowerShell handles console input and display
Когда вы вводите команду, PowerShell всегда обрабатывает входные данные командной строки напрямую.When you type a command, PowerShell always processes the command-line input directly. PowerShell также форматирует выходные данные, отображаемые на экране.PowerShell also formats the output that you see on the screen. Это важно, так как нагрузка, требуемая для обработки каждого командлета, сокращается,This difference is significant because it reduces the work required of each cmdlet. и действия выполняются аналогичным образом независимо от используемого командлета.It ensures that you can always do things the same way with any cmdlet. Разработчикам командлетов не нужно писать код для синтаксического анализа аргументов командной строки или форматирования выходных данных.Cmdlet developers don’t need to write code to parse the command-line arguments or format the output.
Традиционные программы командной строки используют собственные схемы для запроса и отображения справки.
/?
для показа справки, а другие используют -?
, /H
или даже //
.Some command-line tools use /?
to trigger the Help display; others use -?
, /H
, or even //
. Некоторые отображают справку в окне графического пользовательского интерфейса, а не в окне консоли.Some will display Help in a GUI window, rather than in the console display. Если введен неправильный параметр, средство может проигнорировать ошибку и автоматически начать выполнение задачи.If you use the wrong parameter, the tool might ignore what you typed and begin executing a task automatically.
Поскольку PowerShell автоматически анализирует и обрабатывает командную строку, параметр
-?
всегда означает «показать справку по этой команде».Since PowerShell automatically parses and processes the command line, the -?
parameter always means «show me Help for this command».
Примечание
Когда вы запускаете в PowerShell графическое приложение, для него открывается окно.If you run a graphic application in PowerShell, the window for the application opens. PowerShell вмешивается в процесс только при обработке заданных вами в командной строке входных данных или при возврате выходных данных приложения в окно консоли.PowerShell intervenes only when processing the command-line input you supply or the application output returned to the console window. На внутреннюю работу приложения система не влияет.It does not affect how the application works internally.
PowerShell включает конвейерPowerShell has a pipeline
Пожалуй, конвейеры являются наиболее полезной концепцией в интерфейсах командной строки.Pipelines are arguably the most valuable concept used in command-line interfaces. При правильном использовании конвейеры упрощают работу со сложными командами и отслеживание потока выполнения.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work. Каждая команда в конвейере передает свои выходные данные, элемент за элементом, следующей команде.Each command in a pipeline passes its output, item by item, to the next command. Команды обрабатывают только один объект за раз.Commands don’t have to handle more than one item at a time. Это снижает потребление ресурсов и позволяет получать выходные данные немедленно.The result is reduced resource consumption and the ability to get output immediately.
Эта нотация конвейера похожа на нотацию, которая используется в других оболочках.The notation used for pipelines is similar to the notation used in other shells. На первый взгляд не совсем понятно, чем отличаются конвейеры в PowerShell.At first glance, it may not be apparent how pipelines are different in PowerShell. Хотя вы видите на экране текст, PowerShell передает по конвейеру между командами не текст, а объекты.Although you see text on the screen, PowerShell pipes objects, not text, between commands.
Например, вы можете использовать командлет Out-Host
для принудительного постраничного отображения выходных данных из другой команды. На экране эти данные будут показаны как обычный текст, разбитый на страницы:For example, if you use the
Out-Host
cmdlet to force a page-by-page display of output from another command, the output looks just like the normal text displayed on the screen, broken up into pages:
Get-ChildItem | Out-Host -Paging
Directory: /mnt/c/Git/PS-Docs/PowerShell-Docs/reference/7.0/Microsoft.PowerShell.Core
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 05/22/2020 08:30 About
----- 05/20/2020 14:36 9044 Add-History.md
----- 05/20/2020 14:36 12227 Clear-History.md
----- 05/20/2020 14:36 3566 Clear-Host.md
----- 05/20/2020 14:36 29087 Connect-PSSession.md
----- 05/20/2020 14:36 5705 Debug-Job.md
----- 05/20/2020 14:36 3515 Disable-ExperimentalFeature.
md
----- 05/20/2020 14:36 25531 Disable-PSRemoting.md
----- 05/20/2020 14:36 7852 Disable-PSSessionConfiguration.md
----- 05/20/2020 14:36 25355 Disconnect-PSSession.md
----- 05/20/2020 14:36 3491 Enable-ExperimentalFeature.md
----- 05/20/2020 14:36 13310 Enable-PSRemoting.md
----- 05/20/2020 14:36 8401 Enable-PSSessionConfiguration.md
----- 05/20/2020 14:36 9531 Enter-PSHostProcess.md
...
<SPACE> next page; <CR> next line; Q quit
Разбиение на страницы также снижает потребление ресурсов ЦП, так обработку продолжает командлет Out-Host
, когда он получает всю страницу для отображения.Paging also reduces CPU utilization because processing transfers to the Out-Host
cmdlet when it has a complete page ready to display. Командлет, стоящий в конвейере выше, приостанавливает выполнение, пока не будет готова следующая страница выходных данных. The cmdlets that precede it in the pipeline pause execution until the next page of output is available.
Объекты в конвейереObjects in the pipeline
При запуске командлета в PowerShell вы видите выходные данные в виде текста — именно так в окне консоли и должны отображаться объекты.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. В текстовом представлении могут отображаться не все свойства выводимого объекта.The text output may not display all of the properties of the object being output.
Например, рассмотрим командлет Get-Location
.For example, consider the Get-Location
cmdlet. Эти выходные данные в виде текста содержат сводную информацию, а не полное представление объекта, возвращаемого командлетом Get-Location
.The text output is a summary of information, not a complete representation of the object returned by Get-Location
. Процесс, который форматирует данные для отображения на экране, добавляет к выходным данным заголовок. The heading in the output is added by the process that formats the data for onscreen display.
Get-Location
Path
----
C:\
При передаче выходных данных по конвейеру в командлет Get-Member
отображаются сведения об объекте, возвращаемом Get-Location
.Piping the output to the Get-Member
cmdlet displays information about the object returned by Get-Location
.
Get-Location | Get-Member
TypeName: System.Management.Automation.PathInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property string Path {get;}
Provider Property System.Management.Automation.
ProviderInfo Provider {get;}
ProviderPath Property string ProviderPath {get;}
Командлет Get-Location
возвращает объект PathInfo , который содержит текущий путь и другие сведения.Get-Location
returns a PathInfo object that contains the current path and other information.
Встроенная система справкиBuilt-in help system
PowerShell включает подробные справочные статьи, подобные man
-страницам Unix, которые поясняют понятия PowerShell и синтаксис команд.Similar to Unix man
pages, PowerShell includes detailed help articles that explain PowerShell concepts and command syntax. Эти статьи можно отобразить в командной строке с помощью командлета Get-Help или открыть в актуальной версии документации PowerShell в Интернете.Use the Get-Help cmdlet to display these articles at the command prompt or view the most recently updated versions of these articles in the PowerShell documentation online.
Дальнейшие действияNext steps
Дополнительные сведения о PowerShell см. в разделе Изучение PowerShell этого сайта.To learn more about PowerShell, see the Learning PowerShell section of this site.
Что такое Windows Power Shell, и для чего он нужен
Пользователи, находящиеся в процессе изучения начального экрана 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.
Список всех доступных команд выводит командлет Get-Command. Связка get-help-командлет применяется с целью получения справки по конкретному алиасу. Пример: справка по использованию get-process (отвечает за вывод списка текущих процессов) будет выведена командой get-help-process. Передав ей параметры -example, -detailed, -online или –full, пользователь сможет получить сведенья обо всех его нюансах подробно.
Windows PowerShell – что это такое и как запустить?
Windows PowerShell представляет собой интегрированное средство автоматизации пользовательских сценариев для операционной системы Microsoft Windows, построенное на основе интерфейса командной строки. Оно предназначается главным образом для системных администраторов, а также для всех продвинутых пользователей.
История появления PowerShell в семействе операционных систем Windows такова. Надо сказать, что консольная утилита, позволяющая взаимодействовать с компьютером посредством ввода команд, присутствовала там изначально (собственно, именно посредством такой утилиты когда-то, ещё до широкого распространения средств графического интерфейса пользователя, предполагалось главным образом осуществлять взаимодействие с системой, начиная с MS-DOS самых первых версий).
Сначала существовал довольно ограниченный набор соответствующих команд. Будучи реализованными в составе соответствующей подсистемы ОС (средствами вышеназванной утилиты), они и представляли собой так называемый интерпретатор командной строки. Любые другие задачи могли вызываться из данной оболочки в качестве отдельных программ, оформленных тоже как консольные приложения. Уже в то время имелись и некоторые средства автоматизации задач, реализованные с помощью языка сценариев (с примерами его вы можете познакомиться, открыв в текстовом редакторе любой . BAT-файл).
Очень быстро, однако, стало понятно, что для полноценной автоматизации средств уже имеющегося интерпретатора было недостаточно, особенно после широкого распространения Windows. Правда, уже тогда многие действия удобнее было автоматизировать с помощью приложений, использующих все преимущества графического интерфейса, однако по-прежнему существовала (и существует до сих пор) и потребность в командной строке, позволяющей при достаточном уровне квалификации создавать различные пакетные задания. К сожалению, тогдашний язык сценариев был ещё слишком слаб для реализации сколь либо сложных алгоритмов.
Положение несколько изменилось с появлением Windows 98, в составе которой впервые появляется такое средство, как WSH (Windows Script Host, или сервер сценариев Windows). Оно уже позволяло запускать сценарии с использованием таких скриптовых языков, как JScript и VBScript (и других дополнительно устанавливаемых языковых модулей). К сожалению, у Windows Script Host отсутствует интеграция с существующей командной оболочкой, а также встроенная документация (даже сейчас далеко не все пользователи Windows вообще знают о существовании такого средства). Поэтому в 2003 году Microsoft приступила к разработке новой продвинутой командной оболочки, призванной автоматизировать весь спектр административных задач, впоследствии ставшей известной как PowerShell.
Команды, выполняемые внутри PowerShell, теперь могут представлять собой не только стандартные операции по работе с системой, как раньше, или названия исполняемых файлов, а ещё и целые специализированные классы среды исполнения приложений .NET – так называемые командлеты. Появился и новый улучшенный язык сценариев, включающий в себя реализацию динамических типов, на основе всё того же .NET. Освоив его, продвинутые пользователи теперь могли создавать свои сценарии автоматизации, не прибегая к помощи полноценных сред программирования и таких языков, как C# или VB.NET.
Как запустить PowerShell в Windows?
Для запуска оболочки PowerShell существует несколько способов. Отметим, что её можно запускать как от имени простого пользователя, так и от имени администратора (для этого предусмотрены отдельные пункты меню).
В операционных системах, предшествующих Windows 8, вы можете открыть PowerShell из меню «Пуск», выбрав последовательно пункты «Все программы» и «Стандартные». Также вы можете найти данное средство, введя в строке поиска меню «Пуск» запрос «Интегрированная среда сценариев» или «PowerShell» (для запуска от администратора щёлкните по появившемуся пункту Интегрированная среда сценариев Windows PowerShell и выберите пункт Запуск от имени администратора.
В Windows 8 не имеется штатной поддержки меню «Пуск» (кроме того, которое вызывает оболочку Modern), однако вы легко можете найти PowerShell в контекстном меню, всплывающем по нажатию комбинации клавиш Win-X. Либо нажав правой кнопкой мыши на меню Пуск. Это же относится и к Windows 10.
Также, если вы используете Windows 10, то сможете отыскать соответствующий пункт и во вновь вернувшемся в этой системе меню «Пуск» (или любой существующей реализации этого меню сторонними компаниями).
Наконец, для запуска PowerShell непосредственно из командной строки можно использовать команду PowerShell_ISE или ISE.
На этом все. Всего хорошего!
Руководство по Windows PowerShell для начинающих
PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий IT-профессионалам более широкие возможности для конфигурирования операционных систем семейства MS Windows. Проще говоря, это своего рода универсальный инструмент администрирования. В данной статье будут рассмотрены базовые приёмы написания скриптов на PowerShell, позволяющие простым путём автоматизировать управление Windows-окружением.
PowerShell предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов. Для запуска интерфейса командной строки введите powershell
в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню.
ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.
Написание и запуск скриптов
Скрипты сохраняются в виде файлов с расширением .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 ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW*
выводит список служб, у которых имя начинается с W
. Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member
. Например, Get-Process | Get-Member
:
Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples
:
Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help
можно просто написать Help
.
При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа
#
, а блок комментариев ограничивается комбинациями символов <#
и #>
в начале и в конце соответственно.
Конвейер
PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:
GetService | SortObject -property Status
— сортировка запущенных служб по статусу;“Hello World!” | Out-File C:\ps\test.txt
— запись текста в файл.
Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:
Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname
Заключение
Итак, благодаря этому руководству у новичков появилось представление о том, что из себя представляет PowerShell. Также мы рассмотрели варианты изменения политики выполнения скриптов, что такое командлет, как они обмениваются данными с помощью конвейера и как получить свойства нужного объекта. Помните, что в случае затруднений можно воспользоваться командлетом Get-Help.
Перевод статьи «Windows PowerShell Scripting Tutorial for Beginners»
Что такое Windows PowerShell и для чего он нужен
Изучая меню пуск Windows 7 или начальный экран Windows 8 1, начинающие пользователи нередко открывают для себя приложения, назначение которых им не понятно. Как раз одно из таких приложений — PowerShell. Что же такое этот самый PowerShell и есть ли от него хоть какой-то толк? Ну, раз его кто-то придумал и интегрировал в Windows, значит, толк всё-таки есть. Кстати, этим самым придумавшим PowerShell является компания Microsoft.
Итак, PowerShell. Предназначается это приложение, прежде всего для системных администраторов, а вот простые пользователи, тем более начинающие, пользы из него для себя почти никакой не извлекут. Представляет собой PowerShell современную стандартизированную оболочку командной строки, обеспечивающую большую гибкость управления компьютером на базе операционной системы Windows. По сути, PowerShell — это та же командная строка, но только намного более функциональная.
Что умеет этот инструмент администрирования? Много чего. С его помощью системные администраторы и опытные пользователи могут управлять процессами, службами, файловыми хранилищами, аккаунтами и даже серверами. Также оболочка позволяет запускать внешние команды, работать с объектами .NET, COM и XML, проделывать разные трюки и т.п., создавать и выполнять собственные сценарии. Кстати, для написания скриптов в Windows предусмотрена специальная графическая консоль ISE, являющаяся своего рода дополнением к основной оболочке PowerShell.
Как и консоль CMD, оболочка PowerShell имеет свой набор команд, именуемых командлетами. Утилита распознает многие из команд CMD, но в целом синтаксис языка, определения командлетов и их параметров отличаются от того, что пользователи привыкли видеть в обычной командной строке. Кроме того, знакомые команды вроде dir, cd, copy и т.п., прекрасно понимаемые PowerShell, на самом деле являются псевдонимами. Например, команда Dir, служащая для просмотра файловой системы соответствует «родному» командлету Get-ChildItem. Псевдонимы или как принято говорить, алиасы, служат чисто для удобства.
Разобраться с PowerShell начинающему пользователю, особенно если тот незнаком хотя бы с основами обычной командной строки, будет непросто. А руководств и справочников, достаточно понятных и простых для усвоения, не так уж и много. Есть неплохое руководство, написанное Франком Кохом, с которым мы рекомендуем ознакомиться, если вы всё же решитесь приступить к изучению скриптового языка PowerShell. Ну, и конечно, собственная справочная системы оболочки.
Она мощная и развёрнутая, с множеством конкретных примеров. Пользоваться ей достаточно просто. Основная информация по справочной системы выводится командлетом Get-Help. Командлет Get-Command выводит список всех доступных команд.
Get-Command
Для получения справки по конкретному командлету или алиасу используется связка get-help командлет. Например, команда get-help get-process выведет основную справку по использованию командлета get-process, отвечающего за вывод списка текущих процессов. Передав же ей параметры –detailed, -examples, -full или –online, можно будет получить самые подробные сведения обо всех его нюансах.
Является ли Windows PowerShell такой же мощной, как терминал Unix / Linux? [закрыто]
Итак, ваша первая проблема заключается в том, что вы сравниваете оболочку (PowerShell) с терминалом. В Linux терминал — это то, что отправляет и получает символьный ввод / вывод, и предполагается, что за ним стоит интерактивный пользователь (иными словами, это приложение с графическим интерфейсом, используемое для хранения оболочки). Одним из наиболее распространенных оболочек, запускаемых в Терминале Ubuntu, является Bash , но есть и другие.
Люди в автономном режиме говорят мне, не объясняя особо, что Windows PowerShell — это попытка заставить администраторов Unix чувствовать себя более комфортно при использовании Windows.
Действительно, правильно сказать, что PowerShell — это Windows, представляющая большую часть объектной модели WMI , COM и .NET в интерактивной среде сценариев с поддержкой сценариев, и что эта среда командной строки по-прежнему заимствует многие концепции, такие как конвейеры. и перенаправление ввода / вывода — из оболочек Unix, так же, как старый DOS (2.0 и выше) command.com
и cmd.exe
сделал. Конвейеры работают с объектами в PowerShell. Вы можете делать такие вещи, как создание HTML и, возможно, таблиц Excel на лету, если вы знали достаточно. Это, безусловно, обновление / замена старой cmd.exe
оболочки, которая мало изменилась по сравнению с Windows NT 4. 0 .
Что касается синтаксиса, он меньше похож на оболочки Unix (хотя, наконец, ни один из командлетов не используется /
в качестве переключателя или индикатора параметров), но существует много псевдонимов для классических команд Unix — например, ввод ls
в окне PowerShell будет работать аналогично dir
. Но это просто псевдонимы («Get-Alias» перечисляет их?).
Что касается возможностей PowerShell, у вас действительно были аналогичные возможности, только в сценариях, из VBScript и CScript — хотя оба они предшествовали .NET.
Единственное, что Unix люди не должны делать при использовании Bash большую часть времени, — это быть близко знакомыми с, возможно, очень сложной объектной моделью программиста или объекта, которая требуется для многих сложных и простых задач PowerShell. Но это возможно только потому, что существует четкое соглашение о прямом выводе текста для многих стандартных команд POSIX . В Windows не было этой традиции — казалось, что вы предпочитаете использовать mmc
консоль для задач администрирования, с командами, добавляемыми здесь и там на протяжении многих лет. Кроме того, многие хорошо известные утилиты Unix сложны и требуют некоторых исследований перед использованием —
rsync
, wget
и многих других. Эффективность, вероятно, зависит от того, насколько хорошо известно, какой инструмент они используют, больше всего на свете.
Windows powershell: что это?
Первые операционные системы не содержали никакого интерфейса взаимодействия с пользователем, кроме командной строки. 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 для решения специальных прикладных задач системного программирования.