30.09.2016
В Windows скрипты PowerShell (расширение .PS1) по умолчанию не ассоциированы с исполнимым файлом PowerShell.exe. При двойном щелке по файлу сценария PS1 открывается окно тестового редактора notepad.exe. Запустить файл PS1 на выполнение в среде PowerShell можно из контекстного меню проводника, выбрав пункт Run With PowerShell. Однако такой сценарий запускается в рамках сессии пользователя, без прав администратора. Хотя для тех же файлов скриптов .bat, .cmd, имеется отдельный пункт меню Run As administrator. В случае с PowerShell приходится открывать консоль Power Shell с повышенными правами и указывать полный путь к файлу скрипта. Не очень-то удобно.
Рассмотрим, как добавить в контекстное меню проводника File Explorer для файлов с расширением *.ps1, пункт, позволявший запустить скрипт PowerShell с правами администратора.
- Запустите редактор реестра (regedit.exe)
- Перейдите в ветку HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\shell
- Создайте подраздел с именем runas и перейдите в него
- Внутри раздела runas создайте пустой строковый параметр (String Value) с именем HasLUAShield (этот параметр добавит иконку UAC в контекстное меню проводника)
- В разделе runas создайте вложенный подраздел command
- В качестве значения параметра Default раздела command укажите значение:
powershell.exe "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
- Теперь, если щелкнуть ПКМ по любому *.PS1 файлу, в контекстном меню можно выбрать пункт Run as administrator
Совет. Если скрипт отрабатывает быстро, пользователь успевает только увидеть появившееся и быстро исчезнувшее окно PowerShell. А что делать, если результат выполнения скрипта должен остаться на экране для просмотра пользователем?
Чтобы после окончания работы скрипта, окно консоли PowerShell не закрывалось, необходимо добавить в строку параметр –NoExit:
powershell.exe –NoExit "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
Если вы разработчик, то вполне можете создавать полноценные сценарии автоматизации. PowerShell отлично справляется с этой задачей, особенно если вы используете его для того, чтобы создавать, тестировать и развертывать решения в средах CI/CD.
В этой статье мы поближе посмотри на то, как создаются и запускаются сценарии PowerShell. Здесь мы пробежимся по пошаговому руководству, как сделать это с помощью VS Code, Notepad и ISE (Integrated Scripting Environment – интегрированная среда разработки сценариев).
Давайте начнем!
Что такое PowerShell?
PowerShell – это кросс-платформенное инструментальное средство автоматизации и конфигурирования. Он предоставляет полный пакет для администраторов, разработчиков и прочих пользователей, который позволяет запускать командлеты (небольшие и легкие команды) для управления различными задачами.
Под пакетом понимается следующее:
- Оболочка командной строки
- Соответствующий язык программирования
- Фреймворк для выполнения командлетов
В отличие от командной строки, его можно использовать на всех основных платформах, в том числе Windows, Linux и macOS.
Если смотреть с технической точки зрения, в основе PowerShell лежит платформа .NET. За счет своего принципа работы он поддерживает объекты и структурированные данные, например, JSON, CSV и XML. Кроме того, разработчики могут вместе с PowerShell использовать REST API. Увы, но стандартная командная строка всего этого не поддерживает, так как она текстовая.
Все сценарии PowerShell имеют расширение .ps1.
Если вы собираетесь писать сценарии PowerShell, то вам нужно знать три ключевых понятия:
- Командлеты: это элементарный исполняемый сценарий, который предлагает предварительно настроенный функционал. Например, для того, чтобы скопировать какой-то элемент, вы можете воспользоваться командлетом Copy-Item, для того, чтобы получить справку, — Get-Help, для того, чтобы вывести что-либо на экран, — Write-Host.
- Псевдонимы: псевдонимы позволяют легко обращаться к командлетам. Они обеспечивают более быстрый доступ к ним. Однако желательно использовать их с подсказками с точки зрения интерактивности и не стоит их использовать при непосредственном написании сценариев PowerShell.
- Функции: функция – это набор операторов PowerShell. Инициировать работу функции можно, вызвав ее.
PowerShell и написание сценариев
Написание сценариев – это основополагающий метод автоматизации некоторой вашей работы. Неважно кто вы, программист, администратор или фрилансер, сценарии могут автоматизировать какие-то стандартные рабочие процессы.
Если уж на то пошло, то у написания сценариев есть большое количество преимуществ, например,
- Автоматизация экономит ваше драгоценное время
- Переносимая база знаний
- Позволяет поддерживать согласованность между системами
- Повышает уровень ваших навыков и шансы на трудоустройство
Вы можете писать сценарии PowerShell, Bash, Ruby или Python.
В общем-то, PowerShell – это отличный инструмент для написания сценариев. Между тем, Windows не позволяет запускать сценарии в силу настроек безопасности. Их запуск может привести к таким ошибкам, как «Running scripts is disabled on this system.» («Запуск сценариев в этой системе запрещен.»). Для того, чтобы обойти этот момент и все же выполнить сценарий, вам необходимо установить правильную политику исполнения (рассмотрено далее).
Почему для написания сценариев нужно использовать PowerShell?
Одна из основных причин, почему для написания сценариев стоит выбрать именно PowerShell, заключается в том, что он может работать на разных платформах. Он поддерживает Windows, Linux и MacOS, чего нельзя сказать о стандартной командой строке Windows.
PowerShell можно использовать для того, чтобы создавать простые задания с помощью простых построителей задач. Например, вы можете воспользоваться PowerShell для того, чтобы перезагрузить компьютер, периодически очищать кэш или даже выполнить аутентификацию сеансов.
Кроме всего прочего, сценарии PowerShell преимущественно используются для того, чтобы автоматизировать процесс управления системой. И тем не менее, вы, как разработчик, можете использовать его для тестирования, сборки и развертывания сборок в среде CI/CD.
Как создавать сценарии PowerShell?
Для того, чтобы создавать сценарии PowerShell, вам нужен текстовый редактор. В большинстве случаев вы будете довольны и самым простым текстовым редактором, но, если вы решите попробовать современный редактор текста/кода, то можете обнаружить, что весь процесс стал лучше поддаваться управлению.
Именно поэтому мы начнем с того, что продемонстрируем то, как можно создавать сценарии PowerShell с помощью Visual Studio Code (также известного как VS Code). Помимо этого, мы рассмотрим, как можно создавать сценарии PowerShell в Блокноте и прочих интегрированных средах, которые отлично подходят для написания сценариев, например, PowerShell Integrated Scripting Environment (PowerShell ISE).
1. С помощью VS Code
VS Code – это надежный кросс-платформенный редактор кода, и, к тому же, бесплатный. Его разработкой занимается компания Microsoft. Она предоставляет пользователям дополнительные преимущества отличной поддержки PowerShell.
Вы получаете чистый готовый интерфейс и можете выбрать для работы чуть ли не любой язык программирования.
VS Code – это полноценный редактор кода, а значит, он поддерживает расширения. И для того, чтобы писать сценарии PowerShell было еще более удобно, мы воспользуемся расширением PowerShell.
Установка Visual Studio Code
Для начала вам нужно установить VS Code.
Для того, чтобы сделать это, перейдите на страницу скачивания Visual Studio Code. Выберите подходящую версию VS Code в зависимости от вашей операционной системы. Мы используем Windows 11, поэтому мы выбрали версию для Windows.
После того, как загрузка завершится, дважды щелкните по установщику и для того, чтобы установить программу на свой компьютер, следуйте указаниям мастера установки.
Установка расширения PowerShell
Установить расширение PowerShell можно двумя способами. Для начала создайте новый файл с расширением .ps1.
VS Code довольно продуманный и понимает, что вы собираетесь работать с PowerShell, поэтому автоматически рекомендует вам установить расширение PowerShell от Microsoft.
Чтобы установить расширение, нажмите кнопку «Install» («Установить»). Или же, если вы хотите узнать больше, нажмите кнопку «Show Recommendations» («Показать рекомендации»).
Если по той или иной причине Visual Studio Code не выдал вам никаких рекомендаций, вы можете попробовать найти плагин вручную.
Для того, чтобы открыть окно с расширениями, нажмите на символ с четырьмя квадратиками (с одним вылетающим квадратиком) или нажмите Ctrl+Shift+X. Теперь введите в строке поиска «PowerShell» и нажмите на первый результат. После этого переходите к его установке (нажмите кнопку «Install»).
В конце он спросит вас, доверяете ли вы авторам файлов, находящихся в рабочей среде. Для того, чтобы завершить установку, нажмите «Trust Workspace&Install» («Доверять рабочей среде и установить»).
Создание сценария PowerShell с помощью VS Code
Теперь, когда вы по всем правилам установили VS Code и расширение PowerShell, вы можете создать свой первый сценарий PowerShell.
Если вы еще не создали новый файл, то вы можете это сделать следующим образом:
- Откройте VS Code
- Откройте главное меню, нажмите «File» («Файл»), а затем «New Text File» («Новый текстовый файл»).
- Теперь сохраните файл, выбрав «File» -> «Save As» («Файл» -> «Сохранить как»).
- Введите название файла и не забудьте указать расширение .ps1.
- В конце нажмите «Save file» («Сохранить файл»).
Вот и все! Теперь вы можете создать свой сценарий. Я добавил командлет Write-Host со значением «This is a VS Code Script written for Geekflare.» («Это сценарий VS Code, написанный для Geekflare.»).
Чуть позже мы посмотрим, как выполнить этот сценарий, так что читайте дальше!
2. С помощью Блокнота
Нет ничего проще, чем создавать сценарии PowerShell в Блокноте.
Все, что вам для этого нужно, выполнить следующее:
- Откройте Пуск и найдите там Блокнот (Notepad).
- Теперь щелкните по нему правой кнопкой мыши и выберите «Открыть от имени администратора» («Open as an administrator»).
- Напишите свой сценарий.
- В качестве примера напишем «This is a PowerShell Script written in Notepad.» («Это сценарий PowerShell, написанный в Блокноте.»).
- Перейдите в главное меню, выберите «File» и нажмите «Save As».
- Введите название вашего сценария PowerShell и нажмите «Save».
Вот и все! Вы успешно создали сценарий PowerShell в Блокноте.
3. С помощью PowerShell ISE
Кроме того, PowerShell в Windows предлагает нам свою собственную интегрированную среду разработки сценариев. С ее помощью вы можете писать свои сценарии, не прибегая к помощи сторонних редакторов кода и текста.
Для того, чтобы использовать его с толком, вам нужно выполнить следующее:
- Откройте Пуск.
- Найдите Windows PowerShell ISE, введя в строку поиска «PowerShell».
- Выберите первый результат, щелкните по нему правой кнопкой мыши и выберите «Открыть от имени администратора». Откроется окно Windows PowerShell ISE.
- Теперь нажмите «File» и выберите «New» («Новый»). Откроется окошко с новым файлом (как показано ниже).
- Напишите сценарий. В качестве примера напишем «This is a PowerShell Script written with the help of PowerShell ISE.» («Это сценарий PowerShell, написанный с помощью PowerShell ISE.»).
- После чего, нажмите «File» и выберите «Save As».
- Введите название файла и нажмите «Save».
Помимо всего прочего, PowerShell ISE может помочь вам запустить сценарий. Для этого найдите сверху кнопку «RUN» («ЗАПУСТИТЬ») и нажмите ее. Если она выдает ошибку безопасности, то ниже вы можете прочитать, как ее исправить.
Как исправить ошибку безопасности сценария PowerShell и запустить его?
Как мы уже говорили ранее, у Windows есть строгая политика безопасности в отношении запуска сценариев. Для того, чтобы решить этот вопрос, вам нужно разрешить выполнение сценариев на вашем компьютере под управлением Windows.
Для этого выполните следующее:
- Откройте Пуск.
- Найдите PowerShell.
- Теперь щелкните на приложение PowerShell правой кнопкой мыши.
- Выберите «Открыть от имени администратора».
- Когда PowerShell откроется, введите команду Set-ExecutionPolicy RemoteSigned.
- Нажмите Enter. После этого приложение запросит подтверждение. Чтобы разрешить запуск сценариев, нажмите А.
Вот и все! Теперь вы наконец-то можете запускать свои сценарии!
Ниже мы показали, как это выглядит в случае с PowerShell ISE.
А вот так это выглядит в случае с Visual Studio Code.
А в случае с Блокнотом вам придется запустить сценарий непосредственно из командной строки PowerShell.
Рекомендации по написанию и запуску сценариев PowerShell
Когда вы работаете со сценариями PowerShell, необходимо следовать рекомендациям, а именно:
- Используйте полную форму командлета, а не псевдоним. Псевдоним удобно использовать, когда вы работаете с консолью. Да, он может улучшить интерактивность, но может испортить сценарий.
- Желательно не использовать командлет Write-Host, поскольку его функциональные возможности довольно ограничены. Да, он может вывести какой-то текст на экран, но вы не можете настроить то, каким цветом будет печататься этот текст. Вместо этого лучше используйте командлет Write-Output.
- Всегда используйте существительное внутри командлета только в единственном числе, не во множественном.
- Используйте для командлета только утвержденные глаголы.
- Если возможно, указывайте расширение приложения. Это поможет устранить путаницу и повысит уровень читаемости.
- Используйте специальные редакторы кода PowerShell, например, VS Code или PowerShell ISE. У них есть отличные функции, которые помогут вам в написании и запуске сценариев PowerShell. Конечно, вы можете использовать Блокнот (Notepad или Notepad++), но в таком случае вы сузите границы своих возможностей.
- Старайтесь комментировать код, но не переборщите, поскольку это может плохо повлиять на читаемость кода и удобство его сопровождения.
- Убедитесь в том, что вы установили правильный параметр безопасности для запуска сценариев PowerShell.
Заключение
Вот и все! Теперь вы знаете, как создавать и запускать сценарии PowerShell с помощью Блокнота, VS Code и PowerShell ISE. Кроме того, вы можете использовать любой из упомянутых выше инструментов для того, чтобы писать и выполнять сценарии PowerShell.
И тем не менее, как уже было сказано в рекомендациях, писать сценарии PowerShell в Блокноте – не самая лучшая идея. В таком случае вы упускаете возможность воспользоваться многими функциями, которые есть у специальных редакторов кода VS Code и PowerShell ISE.
PowerShell scripts are a great way to automate tasks, gather information, or modify properties in bulk. Most PowerShell commands are only a single line that you can just copy and paste into PowerShell. But how do you run a complete PowerShell Script?
There are a couple of options when it comes to running PowerShell scripts, simply from the cmd, using the PowerShell ISE, or even a scheduled task.
In this article, I will explain the different options to run a PowerShell script. Also, I will help you with common errors, like “running scripts is disabled on this system”.
Fix Running Scripts is Disabled on this System
We are going to start with a common error that prevents most users from running a PowerShell script, the error “Running scripts is disabled on this system”. This error is caused by the PowerShell Execution Policy.
By default, the PowerShell Execution policy is set to Restricted. This means that PowerShell scripts won’t run at all.
So to run a PowerShell script, we first need to change the execution policy. For the policy we have a couple of options:
Execution Policy | Description |
---|---|
Restricted | Default option – does not allow to run any PowerShell script |
Unrestricted | Can run any script, shows warning for downloaded scripts |
RemoteSigned | Requires a digital signature for downloaded scripts. You can run locally written scripts. You can unblock downloaded scripts to run them without signature |
ByPass | You can run all scripts and no warnings are displayed |
AllSigned | You can only run signed scripts from trusted publishers |
Execution Policies are not designed as a security model, but more to prevent the accidental execution of a PowerShell script. The best option is to use the RemoteSigned policy, this way you can’t run a downloaded script by accident (you will have to unblock it first). Read more about the execution policy in this article.
Tip
Learn more about writing your own PowerShell scripts in this complete guide
To change the execution policy in PowerShell (and fix “Running scripts is disabled on this system) we need to start PowerShell with administrator privilege:
- Press Windows key + X (or right click on the start menu)
- Choose Windows PowerShell (admin)
- Run the command below:
Set-ExecutionPolicy RemoteSigned
You should now be able to run PowerShell Scripts.
There are a couple of options to run a PowerShell script. The most convenient way is to simply right-click the file and choose Run with PowerShell.
But this method comes with a downside. By default, most PowerShell scripts will close the PowerShell window automatically when the script is done. So the script gets executed, but you won’t be able to read any errors or output.
You can solve this by adding the following line to the end of the PowerShell script, but that is not always a convenient option:
Read-Host -Prompt "Press Enter to exit"
Use Windows PowerShell
Personally, I prefer the start PowerShell scripts from the command line in Windows PowerShell itself. There are two ways to do this, you can first start PowerShell and navigate to the script or open PowerShell in the correct location from the explorer.
We start with the latter, opening the PowerShell in the correct location from the explorer. In the explorer, locate the script that you want to run, in this case, c:\temp\powershell.
- Right-click on the blank area in Explorer (not on the PowerShell file)
- Choose Open PowerShell window here
(In Windows 11 you will need to select Open in Windows Terminal)
As you can see, PowerShell is started in the folder c:\temp\PowerShell. We can now run the script by simply typing the filename (type the first few letters and press Tab to autocomplete it)
You can also first start Windows PowerShell:
- Right-click on the start menu (or press Windows key + X)
- Choose Windows PowerShell
- Navigate to the folder where the script is located
cd c:\path\to\script <enter>
- Run the PowerShell script
.\PowerShellExampleScript.ps1 <enter>
Run PowerShell Script from CMD
If you have tried to run a PowerShell from cmd, then you might have noticed that it will just open the script in notepad. Not really the result we are looking for.
To run the PowerShell script, we need to tell the command prompt to open the script with PowerShell. We can use the following cmd for this:
PowerShell c:\path\to\script\PowerShellScript.ps1
Note that you will need to specify the full path to the PowerShell script. The result of the script is displayed in the command prompt.
If you want to keep the PowerShell session open, you can add the -noexit
parameter to the command:
PowerShell -noexit c:\temp\PowerShell\PowerShellExampleScript.ps1
Using PowerShell ISE
When you download a script from the internet it’s always a good idea to review the script before you run it. An easy way to review and run a PowerShell script is to use the PowerShell ISE.
To open a PowerShell file in the editor, simply right-click it and choose Edit
When you use the editor for the first time you might need to expand the script pane first, to see the content of the PowerShell script:
To run a script in PowerShell ISE simply click on the green play button in the toolbar. The results of the scripts are displayed in the console:
Run PowerShell Script as Administrator
Some PowerShell scripts require administrator privilege to run correctly. They might need access to all folders on your system drive, or need to interact with other domain computers or servers.
The easiest way to run PowerShell scripts as an administrator is to start Windows PowerShell as administrator.
- Press Windows key + X (or right-click the start menu)
- Choose Windows PowerShell (admin)
- Click Yes on the User Account Security prompt
You can now run any PowerShell command or script with Administrator privilege. Simply navigate to the script (or even drag and drop the script) to run it.
You can also run a PowerShell script as administrator from the command line. When you have PowerShell open, we can start a new PowerShell process and run it as Administrator. Optionally we can even specify the file that we want to run:
# Open a new PowerShell windows with Administrator Privilege Start-Process PowerShell -Verb runAs # Run PowerShell script with Administrator Privilege Start-Process PowerShell -Verb runAs -ArgumentList "-file c:\temp\powershell\powershellexamplescript.ps1"
Wrapping Up
I hope you were able to run your PowerShell script with the steps above. Make sure that you have set the Execution policy correctly before you run a PowerShell script. You can also schedule PowerShell scripts using the Task Scheduler.
If you have any questions, just drop a comment below. Make sure you also read more about setting up your PowerShell profile.
Не один год прошел с момента выхода Windows 7 и Server 2008.
Программисты, системные администраторы и продвинутые пользователи нашли множество применений синему окошку, схожему с командной строкой.
Начинающие же юзеры в большинстве своём даже не знают, что такое PowerShell (PS).
А ведь скрипты для PowerShell позволяют автоматизировать, без малого, 100% действий и сценариев, выполняемых в операционной системе посредством командной строки и графического интерфейса.
С основными возможностями этой программы и ознакомимся, побольше внимания уделив функции создания и запуска скриптов (микропрограмм).
Руководств и документации по программе существует несметное количество, в том числе и на русском языке. Задача статьи – дать пользователю концептуальные знания, ввести в курс дела, а стоит ли знакомиться с интерпретатором и выполнением скриптов в нём поближе, решит каждый самостоятельно.
Содержание:
Что собой представляет Windows PowerShell?
PowerShell – интерпретатор командной строки CMD на основе .NET Framework, наделённый собственным языком сценариев.
Первое значит, что работает он в текстовом режиме: вводишь запускаешь команду, а на экране видишь результат её выполнения.
Как это было в MS-DOS и старых версиях UNIX’а.
Второе значительно упрощает, ускоряет и автоматизирует администрирование, обслуживание систем, приложений, процессов и связанных с ними сервисов администраторами и простыми юзерами.
Для Vista, XP и более старых редакций Windows, если их кто-то использует, PowerShell можно установить с пакета Windows Management Framework.
По сравнению с другими интерпретаторами, PS отличается:
- интеграцией с .NET Framework – позволяет создавать мощные скрипты, внедряя в них программный код;
- все возвращаемые данные являются объектами, а не данными текстового/строчного типа (string), что подразумевает их передачу другим скриптам и любую обработку.
Рис. 1 – Вид окна PowerShell
PowerShell второй версии обладает следующими возможностями, часть из которых рассмотрим подробнее:
- Возможность представления команд в виде командлетов – их запуск осуществляется внутри интерпретатора, в ином случае команда выполняется в отдельном процессе.
- Использование конвейеров – предназначены для передачи данных из одной команды в другую с сохранением их структуры и типа.
- Интегрирована многопоточная передача данных по сети с установкой приоритетности и возобновлением соединения.
- Поддержка позиционных и именованных параметров.
- Фоновая работа – асинхронный вызов команд и запуск скриптов на удалённых машинах.
- Установка ограниченных сессий с удалёнными клиентами и выполнение сценариев на них.
- Модули – способ организации скриптов, когда они становятся самодостаточными и выполняются в собственном контейнере, не влияя на окружение модуля.
- Наличие обработчика ошибок.
- Графическая среда для языка: синтаксис, отладчик, подсветка, автоматическое завершение команд с поддержкой Юникод и закладок.
- Добавление точек прерывания в строки, команды, операции и переменные для отладки сценария.
- Блочные и подстрочные комментарии.
- Поддержка создания алиасов для некоторых командлетов, преобразовывающихся в обычные команды в момент выполнения.
- Создание ограниченных сессий, где можно выполнять строго заданный перечень команд и очень многое другое.
Исходный код PowerShell стал доступным каждому: любой участник сообщества может беспрепятственно создавать собственные расширения для увеличения функционала интерпретатора командной строки.
Приступать к освоению интегрированного скриптового языка, не имея навыков программирования, можно.
Создать сложный сценарий получится вряд ли, но выполнять последовательности примитивных действий получится едва ли не у каждого.
Хотя, не обладая знаниями об основных понятиях PowerShell, сделать в окне командного интерпретатора вряд ли что-либо получится. С них и начнём.
к содержанию ↑
Командлеты
Командлеты – своеобразные команды PS, за которыми скрываются самые разные функции. Встроенные в интерпретатор команды реализованы по принципу «глагол-имя существительное», например, Get-Process (получение списка процессов). Такое решение позволяет понимать суть команды уже из её названия (на английском языке).
Часть командлетов поддерживает получение/передачу данных и массивов информации с сохранением их структуры и типа. Это работает по принципу конвейера (речь об этом пойдёт в следующем разделе). Несмотря ни на что, командлеты запускаются и обрабатывают объекты строго порядку.
Для реализации командлетов могут задействоваться любые поддерживаемые .NET API, созданные на любом из .NET-языков.
Таким образом юзеру предоставляется доступ до специфических функций программы.
Командлеты умеют эксплуатировать API для получения доступа к требуемой информации напрямую или через уникальные пути (буквы дисков и пути к директориям).
Посредством командлетов можно работать с реестром Windows, объектами файловой системы и хранилища сертификатов, установленными приложениями и службами.
к содержанию ↑
Конвейер
При создании не очень уж примитивных сценариев или для выполнения каких-либо операций с данными, полученными в результате работы скрипта порой приходится также совершать какие-либо действия.
Для этого существует конвейер. Как и в UNIX, он объединяет команды путём передачи выходных данных одного командлета во входные для другого в неизменном виде, сохраняя свой тип.
При этом не требуются никакой контейнер или посимвольный разбор информации.
В состав передаваемой информации может входить и функция. После окончания работы объединённых команд вызывается функция превращения информации в текстовый вид (конвертация данных в строковые) с применением форматирования текста.
к содержанию ↑
Скрипты
Несмотря на то, что оболочка позволяет автоматизировать множество действий, вводить команды нужно вручную, как и в случае с командной строкой, что не очень удобно.
Особенно, когда одни и те же операции следует выполнять постоянно.
Да и без человеческого фактора не обойтись: опечатки, ошибки, случайно задетые клавиши при написании строчек кода, исправление или набор строки заново требуют более дружелюбного отношения к пользователю.
Для выполнения однообразных цепочек действий в PS реализованы сценарии – текстовые файлы с последовательностью понятных для интерпретатора команд внутри.
Скрипты в PowerShell еще больше упростят и автоматизируют работу за ПК и его обслуживание, особенно, если в сценарии присутствуют разветвления, условия, логические операции и циклы.
Но здесь «не всё золото, что блестит»: написать собственный сценарий или загрузить готовый (пускай и немного подогнав его под собственные цели) так просто не получится.
Если бы в Microsoft это разрешили, сколько бы бед наделали скрипты для PowerShell, написанные мошенниками и недоброжелателями в корыстных или хулиганских целях.
Для выполнения макроса в Windows PS необходимо пройти контроль его запуска.
Если он не пройден, а скрипт должен выполниться, придётся изменить конфигурацию отвечающих за безопасность макросов объектов.
к содержанию ↑
Прежде чем пользоваться скриптами
При эксплуатации VBS возникает много проблем, от коих разработчики PowerShell избавились напрочь, если скриптовую безопасность не понижать для удовлетворения скриптовых запросов пользователя или решения задач, связанных с уровнем защищенности операционной системы.
Запуск скачанного скрипта на пользовательской машине – простой и действенный вариант распространения вредоносного программного обеспечения или кражи персональной информации злоумышленниками.
Всё происходит из-за элементарного незнания содержимого скриптового файла (ps1) и желания побыстрее решить свои задачи за счёт труда других. Объекты, контролирующие уровень безопасности выполнения сценариев, создают окружение, в котором запустить скрипт невозможно.
Преднамеренный запуск макросов происходит после изменения уровня безопасности, если юзер даст добро, осознавая, что он делает, и зная наверняка, что в файле *.ps1 находится.
По причине неудобства конфигурации защиты для людей, нуждающихся в реализации и выполнении собственных сценариев, существует возможность изменения конфигурации.
Здесь можно как снизить защиту до минимума, так и разумно лавировать между возможность открыть дыры для проникновения вредоносного ПО в систему и удобством в работе с PowerShell.
Оболочка обладает тремя уровнями безопасности:
- файлы с расширением ps1 не идентифицируются системой как исполняемые и обозначаются как неизвестные или текстовые (по двойному клику открываются в используемом на компьютере по умолчанию текстовом редакторе);
- оболочка позволяет выполнять скрипты после указания к ним полного пути, скриптовые файлы в текущей директории не ищутся, делая невозможным выполнения макросов, расположенных в текущем каталоге;
- запуск встроенного скрипта Execution Policy, отвечающего за добавление в перечень разрешенных скриптов требуемого.
Даже не думайте изменять конфигурацию, понизив её хотя бы до второго уровня, не ознакомившись с основами PowerShell, пока не начнёте хотя бы поверхностно понимать содержимое файлов *.ps1.
Существует и понятие политики выполнения, созданной с целью предотвратить случайный запуск сценариев. Настроек политики запуска существует целых пять:
- ограниченные – установлены по умолчанию, выполняются только подписанные Microsoft сценарии, позволяющие получать информацию об аппаратной и программной оболочке компьютера;
- имеющих подпись удаленных файлов – выполнять можно все макросы, но загруженные с интернета или присланные по почте файлы должны быть подписанными;
- имеющих цифровую подпись от надежного источника – выполняются все подписанные сценарии;
- неограниченные – запуск любых макросов;
- обходные – предназначены для программистов, которые создают собственную систему безопасности, а не используют представленную в оболочке.
Проверить текущее состояние политики запуска можно командой «Get-ExecutionPolicy». Какой бы ни была политика безопасности, пользователь не сможет запустить скрипт, в котором содержатся команды, на выполнение коих у него недостаточно привилегий.
к содержанию ↑
Запуск PowerShell
От теории пора переходить к практике. Итак, для выполнения скриптов необходимо получить цифровую подпись или понизить политику безопасности (второй вариант попроще).
Вызвать окно PowerShell можно несколькими путями.
Представлено оно в двух видах:
- классическая консоль;
Рис. 2 – Окно PowerShell
- PowerShell ISE – добавляет поддержку вкладок, синтаксиса, контекстной справки, контекстного и главного и меню, что в значительной мере облегчает работу в интерпретаторе.
Рис. 3 – Внешний вид PowerShell ISE
к содержанию ↑
Пуск
Проще всего вызвать PS через Пуск.
- Открываем меню (в Windows 7 кликаем «Все программы»).
- Идём в каталог Windows PowerShell и кликаем по нужной иконке.
Рис. 4 – Запуск PS через Пуск
Также вызвать PS через можно с помощью интегрированной поисковой системы.
Рис. 5 – Запуск PS через поиск
к содержанию ↑
Командный интерпретатор
Кто любит нестандартные и быстрые способы запуска, воспользуйтесь окном «Выполнить». Оно открывается одноимённой кнопкой в Пуске и комбинацией клавиш Win+R.
В диалоговом окне пишем «powershell» и жмём «Ввод».
Рис. 6 – Запуск PS через диалог «Выполнить»
к содержанию ↑
Win+X
В Windows 10 PS можно вызывать из меню WinX. Дело в том, что по умолчанию путём клика по команде «Командная строка» открываемся CMD. Её можно заменить на PowerShell.
Открываем «Свойства» Панели задач, во вкладке «Навигация» ставим галочку возле единственной опции и сохраняем настройки.
Рис. 7 – Замена командной строки на PowerShell в меню WinX
Можно вызывать PowerShell через командную строку, прописав в ней «powershell» или запуском исполняемого файла по пути: %WINDIR%\System32\WindowsPowerShell\v1.0 для 32-битных систем и по адресу %WINDIR%\ syswow64\WindowsPowerShell\v1.0 для 64-разрядных Windows любой редакции.
Рис. 8 – Запуск PS из каталога, где хранится его исполняемый файл
к содержанию ↑
Настройка политики безопасности
Осталось немного – разрешить PowerShell выполнение скриптов. Прописываем команду «Set-ExecutionPolicy RemoteSigned» и жмем «Y».
Рис. 9 – Изменение политики выполнения
На этом всё. Теперь можете выполнять любые командлеты и скрипты. Попробуем, например, отобразить список активных процессов, выполнив «Get-Process».
Рис. 10 – Результат выполнения первой команды
к содержанию ↑
Запуск скриптов
Создавать сценарии можно в любом текстовом редакторе (лучше остановиться на Win, Notepad++ или подобному, с поддержкой синтаксиса или проверки) либо в программе PowerShell ISE.
Последняя предоставляет удобный доступ к командлетам, возможности запуска, отладки и сохранения сценариев.
Предположим, что свой первый скрипт вы написали (это получение перечня запущенных процессов), сохранили через меню «Файл», и его нужно запустить. Делается это тремя путями:
1 Прописываем полный путь к скрипту в PowerShell (или ISE);
Рис. 11 – Запуск первого скрипта путём прописывания пути к нему
2 Через контекстное меню файла ps1;
Рис. 12 – Запуск сценария через его контекстное меню
3 Открываем сценарий в PowerShell ISE и жмём F
Рис. 13 – Запуск скриптов из окна PowerShell ISE
Важно, чтобы в пути к файлу отсутствовали пробелы!
PowerShell – мощное средство для упрощения выполнения рутинных операций в Windows 7, Server 2008 и более новых. Важное достоинство PowerShell – скрипты и наличие версии программы с графическим интерфейсом PS ISE. Команды в ней представлены в виде командлетов, что сделает возможным ознакомление с оболочкой и понимание смысла каждой команды. Политика безопасности не даст новичку навредить своему компьютеру полученными из неизвестных источников скриптами, а режим отладки, создание собственных командлетов, функций и механизм обработки ошибок открывают перед программистами и администраторами неограниченные возможности.
#Руководства
-
0
Рассказываем о языке программирования, с помощью которого можно творить чудеса в Windows (и не только).
Иллюстрация: Francesca Tosolini / Unsplash / Annie для Skillbox Media
Журналист, изучает Python. Любит разбираться в мелочах, общаться с людьми и понимать их.
Рядовые пользователи общаются со своими ПК через графический интерфейс: нажимают иконки и кнопки, переключаются между окнами и вкладками.
А системные администраторы используют для этого командную строку. Чтобы компьютер понимал их указания, интерпретатор, он же командная оболочка, переводит всё на машинный язык.
Есть десятки оболочек под разные нужды, предпочтения и операционные системы. В Linux обычно используют Bash, в macOS по умолчанию установлен Zsh, а для Windows (но не только) есть PowerShell.
Из статьи вы узнаете:
- Что такое Windows PowerShell
- Как открыть PowerShell в Windows
- Какие у неё есть команды (они же командлеты)
- Что такое объекты и конвейеры (пайплайны)
- Как запустить выполнение задач в фоновом режиме
- Как работать в PowerShell ISE
- О переменных
- О логических операторах
- Об условиях в Power Shell
- Как работать с циклами
- О массивах, хеш-таблицах, функциях и классах
Windows PowerShell — это одновременно командная оболочка и язык сценариев, основанный на .NET. PowerShell используют для управления компьютером и автоматизации задач. Это полноценный объектно-ориентированный язык, в котором есть переменные, функции, классы и объекты.
В отличие от других командных оболочек, PowerShell работает не со строками, а с объектами. Благодаря этому можно создавать сложную логику. При этом интерпретатор полностью совместим со стандартными командами cmd.exe и может выполнять их.
Команды пишут в интерактивном режиме внутри терминала. Но если вы хотите сохранить какой-то часто используемый скрипт, удобнее использовать ISE.
Windows PowerShell ISE — это интегрированная среда сценариев для PowerShell. В ней можно писать, сохранять и запускать скрипты, есть подсветка синтаксиса, автодополнение, справочник команд и инструменты отладки. PowerShell ISE — легаси-инструмент, он работает для версии языка 5.1 и ниже. Для более поздних обновлений используют IDE общего назначения с плагинами.
С 2016 года язык стал кросс-платформенным. Его можно использовать не только в Windows, но и в macOS (начиная с версии 10.13) и популярных дистрибутивах Linux (каких именно, можно узнать в документации).
Обычно PowerShell предустановлен по умолчанию. Но если у вас его нет, можете воспользоваться инструкцией от Microsoft. Также в документации есть руководства по установке для macOS и Linux.
PowerShell не зависит от версии операционной системы и одинаково работает как на Windows 10, так и на Windows Server.
Есть два основных способа открыть PowerShell или PowerShell ISE в Windows: меню «Пуск» и приложение «Выполнить».
В меню «Пуск» долистайте до папки Windows PowerShell, откройте её и выберите нужное приложение. Здесь есть 32-разрядные (у них х86 в скобках) и 64-разрядные версии терминала и ISE.
Скриншот: Skillbox Media
Приложение «Выполнить» открывается сочетанием клавиш Win + R. В появившемся окне введите powershell или powershell ise (в зависимости от того, что вам нужно) и нажмите ОК.
Скриншот: Skillbox Media
Команды в PowerShell называются командлетами (от английского cmdlet). Все они состоят из связки «Глагол-Существительное», или по-другому «Действие-Объект». Например, Get-Services и Start-Process. Благодаря такой структуре можно понять назначение команды, даже если вы с ней ещё не сталкивались.
После самого командлета ему передаются параметры и их значения. Между всеми словами в команде ставится пробел. Вот пример синтаксиса команды, чтобы перейти в каталог C:\:
Set-Location -LiteralPath C:\ -PassThru
Препарируем её:
- Set-Location — буквально «установить местоположение». Переходит в нужный каталог.
- -LiteralPath C:\ — в этом параметре мы прописываем путь до каталога, в который хотим перейти. У командлета Set-Location это аргумент по умолчанию, поэтому -LiteralPath можно не прописывать отдельно: Set-Location C:\ -Passthru сработает точно так же.
- -PassThru — обычно командлет Set-Location просто меняет местоположение и ничего не возвращает. Этот параметр говорит, что нужно вывести на экран расположение каталога, в который мы перешли.
При этом в PowerShell не важен регистр. Эту же команду можно записать только заглавными буквами, только строчными и даже «лесенкой» — она всё равно сработает.
sEt-loCATion -PATH c:\ -passthru
Если в одной строке написаны сразу несколько команд, они разделяются точкой с запятой ;.
Иногда команда может получиться слишком длинной. Чтобы разбить её на несколько строк, в месте переноса ставится гравис `. Создать новую строку можно сочетанием клавиш Shift + Enter (появится ниже текущей) или Ctrl + Enter (появится выше текущей).
Разделим предыдущую команду:
Set-Location `
-LiteralPath C:\ `
-PassThru
Совет
Стрелки вверх и вниз позволяют прокручивать историю команд, которые вы вводили. Это удобно, если нужно выполнить одну из предыдущих команд ещё раз или внести в неё небольшие изменения.
При работе с терминалом в интерактивном режиме бывает неудобно каждый раз вводить полные названия командлетов. Поэтому у самых распространённых есть псевдонимы, или алиасы, — их сокращённые версии.
Получить список доступных алиасов можно командой Get-Alias (у неё тоже есть свой псевдоним — gal).
Чтобы узнать список алиасов для отдельного командлета, воспользуйтесь параметром -Definition. Например:
Get-Alias -Definition Get-ChildItem
Если вы по алиасу хотите узнать полное название командлета, примените параметр -Name. Это аргумент по умолчанию, поэтому писать его необязательно.
# Оба варианта равноправны Get-Alias -Name clear Get-Alias clear
Многим командлетам для работы нужно передать путь до файла или каталога. Делается это в виде строки, например: C:\Windows\System32.
Но если в этом адресе встретится пробел или другой спецсимвол, PowerShell воспримет его как разделитель. Например:
# Эта команда не будет работать Set-Location C:\Program Files
PowerShell «видит» пробел и думает, что путь до папки закончился на слове Program, а files — это уже значение какого-то другого параметра.
Есть два способа избежать таких ситуаций:
- Экранировать проблемные символы обратным грависом `: C:\Program` Files. Если путь длинный, то это может быть неудобно.
- Поместить весь путь в одинарные или двойные кавычки: ‘C:\Program Files’ или «C:\Program Files» (лучше одинарные).
Также в PowerShell есть сокращения для быстрого доступа к ближайшим директориям:
- Точка . указывает на текущий каталог. Например, Get-ChildItem . позволяет посмотреть все папки и файлы в нынешнем местоположении.
- Две точки .. указывают на родительский каталог. Например, Set-Location .. позволяет быстро к нему перейти. Это может быть полезно, если вы находитесь где-то в глубоко вложенной директории.
У многих командлетов есть сразу два параметра, в которых можно указать путь до папки или файла: -Path и -LiteralPath. Разница между ними в том, что в -Path можно подставлять переменные, а -LiteralPath воспринимает символы буквально, даже если в них указано имя переменной. О переменных в PowerShell мы рассказываем ниже.
Чтобы узнать подробную информацию о командлете, используйте Get-Help Название-Командлета. Например:
Get-Help Get-Childitem
У Get-Help есть несколько полезных параметров:
- -Detailed даёт более детальную справку.
- -Full даёт полную справку.
- -Examples приводит примеры использования командлета.
- -Online перенаправляет на веб-страницу с документацией.
Командлеты PowerShell возвращают в терминал не строки, а объекты — структуру данных с набором свойств и методов. Подробно об объектах можно прочитать в нашей статье.
Строка, которую вы видите в терминале после выполнения команды — только визуальное представление объекта. PowerShell в виде таблицы показывает некоторые свойства, но не все.
Так же, как командлеты возвращают объекты, они могут принимать и обрабатывать их. Можно написать команду, на выходе получить объект, передать его другому командлету, получить объект уже от него, передать — и так до бесконечности. Это и есть конвейеры, или пайплайны.
Чтобы передать результат командлета другому командлету, между ними ставят вертикальную черту |.
Get-Process возвращает список процессов, запущенных на компьютере. Если передать ему название процесса (или шаблон, написанный с помощью регулярных выражений), командлет выведет только нужные элементы списка.
Вызовем запущенный процесс powershell.
Get-Process powershell
Мы получили объект и таблицу с некоторыми его свойствами. Чтобы узнать все свойства и методы, передадим объект командлету Get-Member. Для этого нам и понадобится конвейер.
Get-Process powershell | Get-Member
Get-Member получил объект от Get-Process и вывел таблицу со всем его содержимым. Результат работы Get-Member — тоже объект (вернее, список объектов), который можно передать по конвейеру дальше.
Например, мы хотим отобразить только те строки, в которых MemberType — это Property. Для этого используем командлет Where-Object.
Get-Process powershell | Get-Member | Where-Object {$_.MemberType -eq 'Property'}
Where-Object по очереди перебирает каждый объект, полученный от Get-Member. Выражение в фигурных скобках — логическое:
- $_ ссылается на текущий объект (то есть на отдельную строку в таблице);
- .MemberType обращается к значению свойства MemberType в этом объекте;
- -eq сравнивает, равно ли выражение слева от него выражению справа от него;
- ‘Property’ — это значение, которое мы ожидаем увидеть у свойства MemberType.
О логических выражениях мы рассказываем ниже.
Командлет Format-Table позволяет настроить отображение таблицы, которую PowerShell выводит в терминале: выбрать свойства и методы, которые в ней будут, установить ширину столбцов, сгруппировать данные по нескольким таблицам и так далее.
Отформатируем таблицу, которую получили от командлета Get-Member.
Get-Process powershell | Get-Member | Format-Table -AutoSize -Wrap -GroupBy MemberType -Property Name, Definition
Расшифруем параметры Format-Table:
- -AutoSize выравнивает ширину столбцов по размеру их содержимого;
- -Wrap переносит содержимое ячейки на следующую строку, если она не помещается в размеры экрана (по умолчанию текст обрезается);
- -GroupBy разделяет одну таблицу на несколько, сгруппированных по значению какого-либо свойства (в нашем случае для каждого MemberType создана отдельная таблица);
- -Property указывает, какие свойства объекта будут отображаться в таблице в качестве столбцов (в нашем случае Name и Definition).
Командлет Sort-Object позволяет отсортировать список объектов (то есть таблицу) по значениям её свойств (то есть столбцов). Отсортируем результат работы GetMember по столбцу Name в алфавитном порядке. Для этого используем параметр -Property (работает как у Format-Table).
Get-Process powershell | Get-Member | Sort-Object -Property Name
У Sort-Object есть и другие полезные параметры:
- -Descending сортирует объекты в порядке убывания.
- -Unique удаляет дубликаты и возвращает только уникальные объекты.
- -Top получает число N и отображает первые N объектов в таблице.
- -Bottom получает число N и отображает последние N объектов в таблице.
Некоторые задачи могут занимать много времени. Это, например, установка и обновление ПО, поиск файла в большой директории. Пока PowerShell выполняет одну команду, писать другие нельзя.
К примеру, попытаемся найти на всём диске C файл powershell.exe. Используем для этого командлет Get-ChildItem с параметром -Recurse. Так он будет искать не только в текущем каталоге, но и во всех подкаталогах.
PowerShell может попытаться зайти в папки, к которым у него нет доступа, поэтому добавим -ErrorAction SilentlyContinue. Если случится ошибка, команда не станет сообщать об этом и просто продолжит выполняться.
Получается так:
Get-ChildItem -Path C:\ -Name powershell.exe -Recurse -ErrorAction SilentlyContinue
Как видим, пока задача не завершена, командная строка недоступна. Чтобы принудительно прервать её выполнение, нажмите сочетание клавиш Ctrl + C (при этом ничего не должно быть выделено, иначе компьютер воспримет это как команду «Копировать»).
Чтобы не ждать выполнения долгих задач и сразу приступать к следующим, их можно запускать в фоновом режиме. Делается это командлетом Start-Job, а сама команда помещается в фигурные скобки.
Start-Job {Get-ChildItem -Path C:\ -Name powershell.exe -Recurse -ErrorAction SilentlyContinue}
Одновременно можно выполнять любое количество фоновых задач. Помимо Start-Job для работы с фоновыми задачами есть другие командлеты:
- Get-Job выдаёт отчёт со статусом фоновых задач.
- Wait-Job делает консоль недоступной, пока выполняется фоновая задача.
- Stop-Job прерывает выполнение фоновой задачи.
- Receive-Job выводит результат фоновой задачи и удаляет его из памяти. Чтобы сохранить результат в памяти, используйте параметр -Keep.
Wait-Job, Stop-Job и Receive-Job ожидают, что вы примените их к конкретной задаче (или нескольким). Для этого укажите название Name или идентификатор Id. Делать это можно и в связке с Get-Job.
Get-Job Job1
Терминал PowerShell удобен для выполнения небольших коротких однострочных задач. Чтобы создавать и сохранять сложные скрипты, есть интегрированная среда сценариев.
Важно!
PowerShell ISE предназначен для версий языка 5.1 и младше. Для более старших версий Microsoft рекомендует использовать Visual Studio Code с расширением PowerShell.
PowerShell ISE состоит из трёх основных окон:
- область сценариев в верхней части экрана — в ней пишут скрипты;
- область консоли в нижней части экрана — работает так же, как обычный терминал, здесь можно писать команды в интерактивном режиме;
- панель команд в правой части экрана — полный справочник команд PowerShell с конструктором, в котором можно указать значения нужных параметров.
PowerShell позволяет вставлять в код комментарии. Они никак не влияют на выполнение скрипта и нужны людям, которые будут читать вашу программу. Однострочный комментарий начинается с символа #, а многострочный обрамляется с двух сторон символами <# и #>.
Любой код чаще читают, чем пишут, и важно делать его понятным для человека. Разработчики PowerShell договорились между собой о едином своде правил и выпустили стайлгайд. Вот несколько правил оттуда.
Используйте нотацию PascalCase в названиях командлетов, функций, параметров, свойств, методов, переменных и классов. Неправильно писать: get-service, Get-service, GET-SERVICE. Правильно: Get-Service.
Пишите полные названия командлетов. Алиасы удобны для работы в интерактивном режиме, но в скриптах могут затруднять чтение команд. Неправильно: dir, gci, ls. Правильно: Get-ChildItem.
One True Brace Style при оформлении вложенности. Если вы где-то используете фигурные скобки, то код внутри них отбивается табуляцией (четыре пробела), а сами скобки ставятся так:
if ($var1 -eq $var2) { # Код внутри условия } else { # Код внутри условия # Ещё код внутри условия }
Исключение из прошлого правила — когда код в фигурных скобках совсем небольшой, его можно записать в одну строку. Например:
Get-ChildItem | Where-Object { $_.Length -gt 10mb }
Комментируйте код. Так будет гораздо проще разобраться, что он делает и как работает. Причём как другому человеку, так и вам самим через полгода.
В PowerShell ISE можно выполнить код целиком или частично, есть инструменты отладки. Скрипты сохраняются в файлах с расширением .ps1. Но запустить их двойным кликом не получится — нужно нажать правую кнопку мыши и в появившемся окне выбрать Выполнить с помощью PowerShell.
Также запустить скрипт можно из оболочки. Например, в каталоге C:\Scripts есть файл test_script.ps1. Выполнить его можно:
- командой PowerShell -File C:\Scripts\test_script.ps1, запущенной из любого места;
- командой .\test_script.ps1, запущенной, когда вы находитесь в каталоге C:\Scripts.
По умолчанию запускать любые файлы с PowerShell-скриптами запрещено. Сделано это в целях безопасности. Узнать нынешнюю политику выполнения можно с помощью командлета Get-ExecutionPolicy. Вот какая она может быть:
- Restricted (установлена по умолчанию) — запрещено запускать любые скрипты.
- AllSigned — разрешено запускать только скрипты, которые были подписаны доверенным разработчиком.
- RemoteSigned — разрешено запускать подписанные доверенным разработчиком и собственные скрипты.
- Unrestricted — разрешено запускать любые скрипты.
Чтобы ваши ps1-файлы запускались, нужно заменить политику выполнения на RemoteSigned. Для этого откройте PowerShell от имени администратора и выполните команду:
Set-ExecutionPolicy RemoteSigned
Чтобы подтвердить действие, введите y.
Чтобы сохранять данные и обращаться к ним в будущем, в PowerShell есть переменные. Перед их названием ставится знак доллара $, а сами они могут содержать латинские буквы (заглавные и строчные), цифры и нижние подчёркивания.
Переменная может хранить данные любого типа, и их можно перезаписывать.
Переменную можно привести к определённому типу данных. Создадим переменную со строкой 2023 и преобразуем её в число. Чтобы узнать тип данных, воспользуемся методом .GetType().
Чтобы удалить переменную, используется метод .Clear().
Переменные можно подставлять в строки, если они оформлены двойными кавычками. Если же кавычки одинарные, то PowerShell воспринимает символы в строке буквально. Сравните:
Помимо пользовательских также есть системные переменные. Например, $PSVersionTable хранит информацию о версии PowerShell.
PowerShell позволяет проводить с объектами арифметические операции и сравнивать их друг с другом. Для этого он использует логические операторы.
Арифметические операторы:
- + — сложение;
- — — вычитание;
- * — умножение;
- / — деление;
- % — деление по модулю;
- ( и ) — скобки для группировки операций.
Операторы сравнения оформляются так же, как параметры командлетов. Их названия произошли от английских выражений, указанных в скобках.
- -eq — равно (от equal);
- -ne — не равно (от not equal);
- -gt — больше (от greater than);
- -ge — больше либо равно (от greater than or equal);
- -lt — меньше (от less than);
- -le — меньше либо равно (от less than or equal).
Условия в PowerShell создаются с помощью ключевых слов if, elseif и else. В обычных скобках указывается само условие, в фигурных — код, который запускается при его выполнении. Например:
$Number = 123 if ($Number -gt 0) { Write-Host 'Число больше нуля' } elseif ($Number -lt 0) { Write-Host 'Число меньше нуля' } else { Write-Host 'Число равно нулю' } >>> Число больше нуля
Также условия можно задавать с помощью ключевого слова switch. Например:
$Day = 2 switch ($Day) { 1 {Write-Host 'Понедельник'} 2 {Write-Host 'Вторник'} 3 {Write-Host 'Среда'} 4 {Write-Host 'Четверг'} 5 {Write-Host 'Пятница'} 6 {Write-Host 'Суббота'} 7 {Write-Host 'Воскресенье'} } >>> Вторник
Windows PowerShell — язык программирования, на котором администрируют операционные системы и автоматизируют процессы. Он поддерживает объектно-ориентированное программирование и позволяет работать в интерактивном режиме, а также писать, сохранять и выполнять полноценные скрипты.
- PowerShell предустановлен в Windows, но его можно скачать на macOS и Linux.
- У языка есть собственная интегрированная среда сценариев PowerShell ISE, предназначенная для старых версий языка (5.1 и ниже).
- PowerShell работает не со строками, а с объектами. Он обрабатывает их с помощью командлетов, построенных по принципу «Глагол-Существительное».
- Результат выполнения одного командлета можно передавать другому в конвейере.
- Задачи можно выполнять в фоновом режиме.
- PowerShell — высокоуровневый язык, на котором можно работать с переменными, логическими операторами, условиями, циклами, массивами, хеш-таблицами, функциями и классами.
С чего начать путь в IT?
Получите подробный гайд в нашем телеграм-канале бесплатно! Кликайте по баннеру и заходите в канал — вы найдёте путеводитель в закрепе.
Забрать гайд>