Name already in use
PowerShell / docs / learning-powershell / powershell-beginners-guide.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
19 contributors
Users who have contributed to this file
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
PowerShell Beginner’s Guide
If you are new to PowerShell, this document will walk you through a few examples to give you some basic ideas of PowerShell. We recommend that you open a PowerShell console/session and type along with the instructions in this document to get most out of this exercise.
Launch PowerShell Console/Session
First you need to launch a PowerShell session by following the Installing PowerShell Guide.
Getting Familiar with PowerShell Commands
In this section, you will learn how to
- create a file, delete a file and change file directory
- discover what version of PowerShell you are currently using
- exit a PowerShell session
- get help if you needed
- find syntax of PowerShell cmdlets
- and more
As mentioned above, PowerShell commands are designed to have Verb-Noun structure, for instance Get-Process , Set-Location , Clear-Host , etc. Let’s exercise some of the basic PowerShell commands, also known as cmdlets.
Please note that we will use the PowerShell prompt sign PS /> as it appears on Linux in the following examples. It is shown as PS C:\> on Windows.
Get-Process : Gets the processes that are running on the local computer or a remote computer.
By default, you will get data back similar to the following:
Only interested in the instance of Firefox process that is running on your computer?
Want to get back more than one process? Then just specify process names and separate them with commas.
Clear-Host : Clears the display in the host program.
Type too much just for clearing the screen?
Here is how the alias can help.
Get-Alias : Gets the aliases for the current session.
As you can see cls or clear is an alias of Clear-Host .
cd -> Set-Location : Sets the current working location to a specified location.
dir -> Get-ChildItem : Gets the items and child items in one or more specified locations.
New-Item : Creates a new item.
You can use the -Value parameter to add some data to your file.
For example, the following command adds the phrase Hello world! as a file content to the test.txt .
Because the test.txt file exists already, we use -Force parameter to replace the existing content.
There are other ways to add some data to a file.
For example, you can use Set-Content to set the file contents:
Or simply use > as below:
The pound sign # above is used for comments in PowerShell.
type -> Get-Content : Gets the content of the item at the specified location.
del -> Remove-Item : Deletes the specified items.
This cmdlet will delete the file /home/jen/test.txt :
$PSVersionTable : Displays the version of PowerShell you are currently using.
Type $PSVersionTable in your PowerShell session, you will see something like below. «PSVersion» indicates the PowerShell version that you are using.
Exit : To exit the PowerShell session, type exit .
The most important command in PowerShell is possibly the Get-Help , which allows you to quickly learn PowerShell without having to search around the internet.
The Get-Help cmdlet also shows you how PowerShell commands work with examples.
It shows the syntax and other technical information of the Get-Process cmdlet.
It displays the examples how to use the Get-Process cmdlet.
If you use -Full parameter, for example, Get-Help -Name Get-Process -Full , it will display more technical information.
Discover Commands Available on Your System
You want to discover what PowerShell cmdlets available on your system? Just run Get-Command as below:
If you want to know whether a particular cmdlet exists on your system, you can do something like below:
If you want to know the syntax of Get-Process cmdlet, type:
If you want to know how to use the Get-Process , type:
Sometimes when you run Get-ChildItem or «dir», you want to get a list of files and folders in a descending order. To achieve that, type:
Say you want to get the largest file in a directory
How to Create and Run PowerShell scripts
You can use Visual Studio Code or your favorite editor to create a PowerShell script and save it with a .ps1 file extension. For more details, see Create and Run PowerShell Script Guide
Руководство по 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 .
Например, Get-Process | Get-Member :

Список параметров командлета Get-Process
Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples . Встроенное руководство по PowerShell покажет, для чего используются разные параметры:

Примеры использования командлета
Некоторые командлеты также могут вызываться с помощью алиасов. Например, вместо Get-Help можно просто написать Help — эта команда также вызовет встроенное руководство по PowerShell.
При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа # , а блок комментариев ограничивается комбинациями символов <# и #> в начале и в конце соответственно.
Конвейер
PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:
- GetService | SortObject -property Status — сортировка запущенных служб по статусу;
- “Hello World!” | Out-File C:\ps\test.txt — запись текста в файл.
Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:
Get-Service | WHERE <$_.status -eq “Running”>| SELECT displayname
Заключение
Это руководство для тех, кто изучает PowerShell с нуля, поэтому здесь раскрыты только базовые понятия и приёмы. После его прочтения у вас должно появиться представление о том, что собой представляет этот инструмент. Также мы рассмотрели варианты изменения политики выполнения скриптов, что такое командлет, как они обмениваются данными с помощью конвейера и как получить свойства нужного объекта. Помните, что в случае затруднений можно воспользоваться командлетом Get-Help — это одна из самых важных команд для начинающих изучать PowerShell.
Если пользуетесь не только Windows, но и Linux, посмотрите статью про команды терминала Linux для начинающих. В ней рассказывается про работу с процессами и файлами, навигацию, каналы, xargs, awk и grep.
Что такое 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 она достаточно подробная.
Помимо Get в командлетах для обозначения действий используются и другие глаголы (и не только глаголы, строго говоря). В списке ниже мы приведем несколько примеров:
Add — добавить;
Clear — очистить;
Enable — включить;
Disable — выключить;
New — создать;
Remove — удалить;
Set — задать;
Start — запустить;
Stop — остановить;
Export — экспортировать;
Import — импортировать.
Есть системные, пользовательские и опциональные командлеты: в результате выполнения все они возвращают объект или массив объектов. К регистру они не чувствительны, т.е. с точки зрения интерпретатора команд нет разницы между Get-Help и get-help. Для разделения используется символ ‘;’, но ставить его обязательно только если в одной строке выполняется несколько командлетов.
Командлеты Windows PowerShell группируются в модули (NetTCPIP, Hyper-V и т.д.), а для поиска по объекту и действию существует командлет Get-Command. Показать справку по нему можно так:

По умолчанию команда отображает краткую справку, но в командлеты при необходимости передаются параметры (аргументы). С их помощью можно, например, получить детальную (параметр -Detailed) или полную (параметр -Full) справку, а также вывести на экран примеры (параметр -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 — разрешен запуск любых сценариев.
У администратора есть два варианта действий. Наиболее безопасный предполагает подписание скриптов, но это довольно серьезное колдунство — мы будем разбираться с ним в следующих статьях. Сейчас пойдем по пути наименьшего сопротивления и поменяем политику:

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

Сначала выполняется командлет Get-Service, а потом все полученные им службы передаются на сортировку по свойству Status командлету Sort-Object. В какой именно аргумент передается результат работы предыдущего участка конвейера, зависит от его типа — обычно это InputObject. Подробнее этот вопрос будет рассматриваться в посвященной языку программирования PowerShell статье.
При желании цепочку можно продолжить и передать результат работы Sort-Object еще одному командлету (выполняться они будут слева направо). Кстати, пользователям Windows доступна и привычная всем юниксоидам конструкция для постраничного вывода:
Запуск задач в фоновом режиме
Довольно часто бывает нужно запустить некую команду в фоне, чтобы не дожидаться результата ее выполнения в сессии оболочки. В Windows PowerShell есть несколько командлетов на такой случай:
Start-Job — запуск фоновой задачи;
Stop-Job — остановка фоновой задачи;
Get-Job — просмотр списка фоновых задач;
Receive-Job — просмотр результата выполнения фоновой задачи;
Remove-Job — удаление фоновой задачи;
Wait-Job — перевод фоновой задачи обратно в консоль.
Для запуска фоновой задачи мы используем командлет Start-Job и в фигурных скобках указываем команду или набор команд:

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

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

Всё довольно просто.
Удаленное выполнение команд
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:

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

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

Шпаргалка по PowerShell — это версия языка командной строки Windows, которая помогает вам легко выполнять и автоматизировать критически важные задачи в ваших системах. Но как выполнять эти задачи и максимально использовать PowerShell в своей системе Windows?
Мы составили шпаргалку по PowerShell, в которой описаны синтаксис PowerShell и все команды PowerShell, чтобы помочь вам оптимизировать PowerShell и даже подготовиться к собеседованиям.
Шпаргалка по PowerShell
Начнем с краткого введения в команды Windows 10 PowerShell.
Основы PowerShell
PowerShell — это кроссплатформенное и широко используемое решение для автоматизации задач, сочетающее в себе возможности оболочки командной строки, языка сценариев и структуры управления конфигурацией. PowerShell можно запускать на операционных системах Windows, Linux и macOS. В отличие от других доступных оболочек, которые только принимают и возвращают данные, PowerShell принимает и возвращает объекты .NET.
Эта оболочка имеет следующие возможности.
- Удобная история командной строки
- Широкие возможности, такие как завершение табуляции и предсказание команд
- Псевдонимы команд и параметров
- Система изменения команд
- Встроенная справочная система, подобная Unix man pages
Учитывая возможности любого языка сценариев, вы можете использовать PowerShell для автоматизации процессов и задач управления системой. Он позволяет создавать, тестировать и развертывать решения в средах CI/CD.
PowerShell построен на базе .NET Common Language Runtime (CLR), что означает, что все входные и выходные данные являются объектами .NET. Вам не придется разбирать текстовый вывод, чтобы получить из него информацию.
Язык сценариев PowerShell обладает следующими возможностями.
- Функции, классы, объекты и модули
- Простая система форматирования для обеспечения четкого вывода данных для повышения удобочитаемости
- Встроенная поддержка различных форматов данных, таких как CSV, JSON и XML
- Система типов для создания динамических типов
Теперь перейдем к некоторым полезным командам PowerShell.
Шпаргалка PowerShell по командам
Командлеты
Cmdlets — это внутренние команды PowerShell. Эти команды возвращают один или несколько объектов в конвейер, в конце которого мы упоминаем некоторые свойства объектов в следующей таблице, чтобы увидеть их значения, отображаемые на экране.
| Команда | Описание |
| Эта команда позволяет получить поддержку с помощью PowerShell. | |
| Эта команда предлагает вам список доступных PSDrives, таких как c, env, hklm, hkcu, alias и т.д. | |
| В любом реестре дочерние ключи — это подключи текущего ключа. Чтобы получить необходимые сведения, можно воспользоваться следующей командой. | |
| Выполните эту команду, чтобы рекурсивно перечислить все дочерние элементы текущего PSdrive, папки или ключа реестра. | |
| Используйте эту команду для включения скрытых папок (каталогов). | |
| Выполните любую из этих команд, чтобы получить список имен файлов и каталогов в текущей папке. | |
| Используйте эту команду, чтобы получить количество записей в коллекции объектов, возвращенных командой Get-Children. |
PSdrives
PSdrives — это коллекция объектов, сгруппированных вместе, чтобы к ним можно было получить доступ как к диску файловой системы. PSprovider» выполняет эту группировку.
По умолчанию сеанс PS может обращаться к нескольким PSdrives, включая c:, env:, alias: и HKLM:, где c: означает обычный диск c Windows; env: — это пространство переменных среды Windows; alias: — это коллекция псевдонимов команд; а HKLM — это ветка в реестре.
При любом сеансе PS пользователь попадает в свою домашнюю папку. Если вы хотите перейти из сеанса PS на другой диск PSdrive и получить информацию с этого диска, воспользуйтесь следующими командами:
Конвейеры
Cmdlets использует конвейеры для передачи объектов, но не потоков символов, как Unix. Символ конвейера — | (ASCII 124), за которым следует команда, обрабатывающая вывод, проходящий через конвейер. Конвейер состоит из следующих трех этапов.
В следующей таблице приведены некоторые из основных команд конвейеров:
| Команда | Описание |
| Легко устанавливает значение свойства ‘lastwritetime.year’ на текущую дату и время, не влияя на содержимое файла. | |
| Предоставляет пустой результат | |
| Изменяет старые имена файлов и расширения файлов на новые | |
| Тривиальная команда переименования, вызывающая автоматическую переменную | |
| Если у передаваемого объекта $_ нет свойства (name), вы получите ошибку, так как параметр $_.name является null | |
| Отображает список имен всех файлов, присутствующих в текущей папке, отсортированных в алфавитном порядке. | |
| Перемещает все файлы в подкаталог папки | |
| Выдает сообщение об ошибке, что Move-Item не имеет входа |
Alias (Алиас)
Cmdlets поддерживают несколько псевдонимов. В следующей таблице приведены некоторые псевдонимы и их описания:
| Команда | Описание |
| Добавляет значение к файлу | |
| Поиск содержимого файла в массиве | |
| Изменение папки, ключа или диска PS | |
| Очищает консоль | |
| Удаление файлов | |
| Списки папок, ключей или дочерних элементов PSDrive | |
| Отправляет массив в консоль, конвейер или перенаправляет его в файл | |
| Обход каждого объекта в конвейере | |
| Форматирует таблицу с выбранными свойствами для каждого объекта в каждом столбце | |
| Форматирует свойства процесса по имени | |
| Обеспечивает псевдоним командлета | |
| Предоставляет вам команды только из текущей сессии | |
| Извлечение всех членов объекта | |
| Предоставляет свойства указанного элемента | |
| Получает текущее значение для указанного свойства при использовании параметра name | |
| Находит имена переменных сеансов | |
| Создает новый файл, каталог, символическую ссылку, ключ реестра или запись реестра. | |
| Выдает полный список всех запущенных процессов | |
| Предоставляет местоположение текущего каталога или ключа реестра | |
| Переименовывает старое имя элемента в новое имя | |
| Удаляет указанный каталог, файлы или ключи реестра | |
| Удаляет указанную переменную | |
| Приостанавливает деятельность на определенный период времени |
Операторы
Арифметические операторы
Приоритет оператора
| Приоритет | Оператор | Описание |
| 1 | () | Круглые скобки |
| 2 | — | Для отрицательного числа или унарного оператора |
| 3 | *, /, % | Для умножения и деления |
| 4 | +,- | Для сложения и вычитания |
| 5 | -band, -bnot, -bor, -bxor, -shr, and -shl | Для побитовых операций |
Операторы присваивания
| Оператор | Описание |
| = | Устанавливает значение переменной на указанное значение |
| += | Увеличивает значение переменной на указанное значение или добавляет указанное значение к существующему значению |
| -= | Уменьшает значение переменной на заданную величину |
| *= | Умножает значение переменной на указанное значение или добавляет указанное значение к существующему значению |
| /= | Делит значение переменной на заданное значение |
| %= | Делит значение переменной на заданное значение, а затем присваивает переменной остаток (модуль). |
| ++ | Увеличивает значение переменной, присваиваемого свойства или элемента массива на 1. |
| — | Уменьшает значение переменной, присваиваемого свойства или элемента массива на 1. |
Операторы сравнения
| Тип | Оператор | Сравнительный тест |
| Равенство | -eq | равно |
| -ne | не равно | |
| -gt | больше, чем | |
| -ge | больше или равно | |
| -lt | меньше чем | |
| -le | меньше чем или равно | |
| Соответствие | -like | строка соответствует шаблону подстановки |
| -notlike | строка не соответствует шаблону | |
| -match | строка соответствует regex-шаблону | |
| -notmatch | строка не соответствует regex-шаблону | |
| Замена | -replace | заменяет строки, соответствующие шаблону regex |
| Сдерживание | -contains | коллекция содержит значение |
| -notcontains | коллекция не содержит значения | |
| -in | значение находится в коллекции | |
| -notin | значение отсутствует в коллекции | |
| Тип | -is | оба объекта имеют одинаковый тип |
| -isnot | объекты разного типа |
Логические операторы
Оператор перенаправления
| Оператор | Описание | Синтаксис |
| > | Отправить указанный поток в файл | n> |
| >> | Добавить указанный поток в файл | n>> |
| >&1 | Перенаправляет указанный поток на поток Success | n>&1 |
Операторы типа
Другие операторы
| Оператор | Описание |
| () Оператор группировки | Позволяет переопределить старшинство операторов в выражениях |
| &() Оператор подвыражения | Выдает результат одного или нескольких утверждений |
| @( ) Оператор подвыражения массива | Возвращает результаты одного или нескольких операторов в виде массивов. |
| & Фоновый оператор | Конвейер перед & выполняется этой командой в задании Powershell. |
| [] Cast оператор | Преобразует объекты к определенному типу. |
Регулярные выражения
Регулярное выражение — это шаблон, который используется для сопоставления текста, включающего литеральные символы, операторы и другие конструкции. Регулярные выражения PowerShell по умолчанию не чувствительны к регистру.
| Метод | Чувствительность к случаю |
| Select-String | use -CaseSensitive switch |
| switch statement | use the -casesensitive option |
| operators | prefix with ‘c’ (-cmatch, -csplit, or -creplace) |
Литералы символов
Регулярное выражение может быть литеральным символом или строкой.
Группы символов
Они позволяют сопоставить любое количество символов за один раз, в то время как [^character group] сопоставляет только символы, не входящие в группу.
Диапазон символов
Шаблон также может быть диапазоном символов. Символы могут быть алфавитными [A-Z], цифровыми [0-9] или даже [ —
] (все печатаемые символы) в формате ASCII.
Числа
Класс символов \d будет соответствовать любой десятичной цифре. И наоборот, \D будет соответствовать любой недесятичной цифре.
Словесный символ
Класс символов \w будет соответствовать любому символу слова [a-zA-Z_0-9]. Чтобы подобрать любой несловосочетаемый символ, используйте \W.
Подстановочный знак
Точка (.) является символом подстановки в регулярных выражениях. Он будет соответствовать любому символу, кроме новой строки (\n).
Пробел
Пробельные символы сопоставляются с помощью класса символов \s. Любой не пробельный символ сопоставляется с помощью \S. Буквальные символы пробела ‘ ‘ также могут быть использованы.
Экранирование символов
Обратная косая черта (\) используется для экранирования символов, чтобы механизм регулярных выражений не разбирал их.
Следующие символы зарезервированы: []().\^$|?*+<>.
Подстановка в регулярном выражении.
Регулярные выражения с оператором -replace позволяют динамически заменять текст с помощью захваченного текста.
<input> -replace <original>, <substitute>
Управление потоком
ForEach-Object
ForEach-Object — это командлет, который позволяет выполнять итерации по элементам в конвейере, например, с помощью однострочных команд PowerShell. ForEach-Object будет передавать объекты по конвейеру.
Хотя параметр Module команды Get-Command принимает несколько значений, которые являются строками, он будет принимать их только через конвейерный ввод с помощью имени свойства или ввода параметра.
Если вы хотите передать две строки по значению в Get-Command для использования с параметром Module, используйте команду ForEach-Object:
For
Цикл «for» выполняет итерации, пока заданное условие истинно.
Do
В PowerShell существует два различных цикла «do». Do Until выполняется, пока заданное условие ложно.
Пример 1:
Пример 2:
While
Подобно циклу Do While, цикл While выполняется до тех пор, пока заданное условие истинно. Однако разница заключается в том, что цикл While оценивает условие в верхней части цикла перед выполнением любого кода. Таким образом, он не выполняется, если условие оценивается как ложное.
Переменные
PowerShell позволяет хранить все типы значений. Например, он может хранить результаты команд и элементы командных выражений, такие как имена, пути и параметры. Вот некоторые из различных переменных PowerShell.
Переменные, созданные пользователем: Они создаются и поддерживаются пользователем. Переменные, которые вы создаете в командной строке PowerShell, будут существовать только до тех пор, пока открыто окно PowerShell. Когда вы закрываете окно PowerShell, эти переменные удаляются. Если вы хотите сохранить переменную, вам необходимо добавить ее в свой профиль PowerShell. Вы можете создавать переменные и объявлять их с тремя различными диапазонами: глобальным, скриптовым или локальным.
Автоматические переменные: Эти переменные хранят состояние PowerShell и создаются PowerShell. Только PowerShell может изменять их значения по мере необходимости для поддержания точности. Пользователи не могут изменять значение этих переменных. Например, переменная $PSHOME будет хранить путь к директории установки PowerShell.
Переменные предпочтений: Эти переменные хранят предпочтения пользователя для PowerShell и создаются PowerShell. Эти переменные заполнены значениями по умолчанию и могут быть изменены пользователями. Например, переменная $MaximumHistoryCount задает максимальное количество записей в истории сеансов.
Чтобы создать новую переменную, необходимо использовать оператор присваивания и присвоить переменной значение. Объявлять переменную перед ее использованием не нужно. Значение по умолчанию для всех переменных — $null.
Функция
Именование функции
Для именования функции используйте имя регистра Паскаля с утвержденным глаголом и существительным в единственном числе. Список утвержденных глаголов можно получить, выполнив Get-Verb:
Get-Verb | Sort-Object -Property Verb
Создание простой функции
Для создания простой функции используйте ключевое слово function, за которым следует имя функции. Затем используйте открытую и закрывающую фигурные скобки. Функция будет выполнять код, содержащийся в этих фигурных скобках.
Работа с модулями
Модуль — это пакет, содержащий объекты PowerShell, такие как команды, провайдеры, функции, рабочие процессы, значения переменных и псевдонимы. Элементы пакета можно реализовать в сценарии PowerShell, скомпилированной библиотеке DLL или и в том, и в другом. PowerShell автоматически импортирует модули при первом запуске любой команды в установленном модуле. Вы можете использовать команды в модуле без настройки или конфигурации профиля.
Как использовать модуль
Чтобы использовать любой модуль, его необходимо сначала установить. Затем найдите команду, которая поставляется вместе с модулем, и используйте ее.
Установка модуля
Если вы получили модуль в виде папки, установите его перед использованием в командной строке PowerShell. Некоторые модули являются предустановленными. Вы можете использовать следующую команду для создания каталога Modules для текущего пользователя:
Скопируйте всю папку модуля в каталог Modules. Для копирования папки можно использовать любой метод, включая проводник Windows, Cmd.exe и PowerShell.
Поиск установленных модулей
Выполните следующие действия, чтобы найти модули, установленные в местоположении модулей по умолчанию (не импортированные).
Поиск команд в модуле
Выполните следующую команду, чтобы найти команды модуля:
Импортирование модуля
Выполните следующую команду с нужным именем модуля:
Удаление имени модуля
Вы можете выполнить следующую команду с нужным именем модуля:
Просмотр расположения модулей по умолчанию
Используйте следующую команду для просмотра расположения модулей по умолчанию:
Добавление местоположения модуля по умолчанию
Вы можете использовать следующий формат команды:
Добавление местоположения модуля по умолчанию в Linux или macOS
Используйте следующее, чтобы выполнить ту же команду, что и выше, только в Linux или macOS:
Хеш-таблицы
Хеш-таблица — это сложная структура данных для хранения данных в виде пар ключ-значение. Мы также называем хэш-таблицу словарем или ассоциативным массивом. Чтобы понять, что такое хэш-таблица, рассмотрим серию IP-адресов и соответствующие имена компьютеров. В хэш-таблице эти данные хранятся в виде пар ключ-значение, где IP-адреса обозначают ключи, а имена компьютеров — соответствующие им значения.
Синтаксис хэш-таблицы выглядит следующим образом:
Синтаксис упорядоченного словаря выглядит следующим образом:
Создание хэш-таблиц
Если вы хотите создать хэш-таблицу, выполните следующие действия:
- Начните хэш-таблицу со знака at (@) и заключите ее в фигурные скобки (<>).
- Хэш-таблица должна содержать хотя бы одну пару ключ-значение, поэтому вводите данные после создания хэш-таблицы.
- Отделите ключ от его значения с помощью знака равенства (=).
- Разделяйте пары ключ/значение в хэш-таблице точкой с запятой (;).
- Заключите пробел между ключами в кавычки. Значения должны быть допустимыми выражениями PowerShell. Также заключайте строки в кавычки, даже если между ними нет пробелов.
- Сохраните хэш-таблицу как переменную, чтобы эффективно управлять ею.
- При назначении упорядоченной хэш-таблицы переменной поместите атрибут [ordered] перед символом @. Если поместить его перед именем переменной, команда не выполнится.
Добавление и удаление ключей и значений
Чтобы добавить ключи и значения в хэш-таблицу, используйте следующий формат команды:
Например, вы можете добавить ключ «Time» со значением «Now» в хэш-таблицу с помощью следующего формата оператора:
Или вы можете удалить ключ с помощью этого выражения:
Асинхронная обработка событий
Эти команды позволяют регистрировать и отменять подписки на события и выводить список существующих подписок. Вы также можете перечислить ожидающие события и обработать или удалить их по желанию.
Команды PowerShell для обработки событий
| Имя командлета обработки событий | Описание |
| Register-ObjectEvent | Этот командлет регистрирует подписку на события для событий, генерируемых объектами .NET |
| Register-WmiEvent | Регистрирует подписку на события для событий, генерируемых объектами WMI |
| Register-EngineEvent | Регистрирует подписку на события для событий, генерируемых самим PowerShell |
| Get-EventSubscriber | Получает список зарегистрированных подписок на события в сессии |
| Unregister-Event | Удаляет одну или несколько зарегистрированных подписок на события |
| Wait-Event | Ожидает наступления события. Эта команда может ждать определенного события или любого события. Она также позволяет указать тайм-аут, ограничивающий время ожидания события. По умолчанию ожидание длится вечно. |
| Get-Event | Получает ожидающие необработанные события из очереди событий |
| Remove-Event | Удаляет ожидающее событие из очереди событий |
| New-Event | Эта команда вызывается в сценарии, чтобы позволить сценарию добавлять свои собственные события в очередь событий |
Шпаргалка по PowerShell: заключение
В итоге? Шпаргалка по PowerShell — это универсальный справочник по синтаксису и командам PowerShell. В этой шпаргалке по командам Windows PowerShell мы рассмотрели все основы, чтобы помочь даже новичкам сориентироваться в PowerShell.
Как и в любом другом языке программирования, вы можете использовать переменные и операторы, создавать псевдонимы и функции и даже поддерживать управление потоком.
Если вы готовитесь к предстоящему собеседованию, держите эту шпаргалку по PowerShell 5.0 под рукой для быстрого ознакомления с простыми примерами.
Хотите расширить свои знания о командной строке Windows?
Часто задаваемые вопросы
1. Как получить список команд PowerShell?
Вы можете использовать команду get-command.
2. Сколько существует команд PowerShell?
В PowerShell существует более 200 команд.
3. Как изучить PowerShell для начинающих?
Вы можете воспользоваться вводным руководством Microsoft по PowerShell. Оно содержит простой язык и простые примеры для лучшего понимания.
4. Является ли Windows PowerShell тем же самым, что и командная строка?
В следующей таблице приведены основные различия между PowerShell и командной строкой:
| PowerShell | Командная строка |
| Введен в 2006 году | Введен в 1981 году |
| Работает как с пакетными командами, так и с командами PowerShell | Работает только с пакетными командами |
| Позволяет создавать псевдонимы для команд или сценариев | Не поддерживает создание псевдонимов команд |
| Позволяет передавать вывод команды другим командам. | не позволяет передавать вывод команды другим командам. |
| Вывод осуществляется в виде объекта | Вывод — просто текст |
| Можно выполнять последовательность команд в рамках сценария | Требуется, чтобы одна команда завершилась раньше другой |
| Имеет библиотеки для программирования, так как построен на .net framework. | Отсутствие библиотек программирования |
| Бесшовная интеграция с WMI | Требуется внешний плагин для взаимодействия с WMI |
| Поддерживает системы Linux | Не поддерживает системы Linux |
| Выполняет все типы программ | Запускает только программы консольного типа |
5. Как сделать командную строку по умолчанию вместо PowerShell?
Откройте Настройки > Персонализация > Панель задач. Теперь установите опцию «Заменить Command Prompt на Windows PowerShell» в меню, когда я нажимаю правой кнопкой мыши на кнопку «Пуск» или нажимаю клавиши Windows + X» в положение «Выкл».