<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация

Windows PowerShell: принципы работы и основные возможности

Александр Бархатов
Александр Бархатов
Технический писатель
26 февраля 2025 г.
122
20 минут чтения
Средний рейтинг статьи: 3

Первые версии Linux- и Unix-дистрибутивов традиционно управлялись при помощи командной строки. Несмотря на то, что со временем были выпущены различные графические оболочки, такие как GNOME, KDE, Cinnamon, XFCE, Linux стал прочно ассоциироваться с управлением через терминал. В то же время операционные системы семейства Windows ассоциируются именно с использованием графического интерфейса. Однако, существует способ, при котором можно управлять ОС Windows из командной оболочки, — с помощью инструмента PowerShell. Сегодня мы рассмотрим синтаксис и основы работы с PowerShell.

Что такое PowerShell?

PowerShell — это мощная кросс-платформенная среда автоматизации и управления конфигурациями, разработанная корпорацией Microsoft. PowerShell объединяет в себе командную оболочку и язык сценариев, что позволяет выполнять административные задачи, автоматизировать процессы и управлять системой Windows.

История развития PowerShell: от Monad до современной версии

История PowerShell берет свои корни в начале 2000-х годов, когда Microsoft решила создать более мощную и продвинутую командную оболочку для Windows, взамен устаревшей cmd.

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

  • Использование объектов вместо простого текстового ввода/вывода, в отличие от Unix-оболочек.
  • Единый подход к управлению локальными и удаленными системами.
  • Глубокая интеграция с .NET Framework.
  • Конвейерная (pipeline) обработка данных с передачей объектов, а не строк.

Впервые широкой публике Monad был представлен в 2003 году, а в 2005 году вышла первая публичная бета-версия. Однако после выхода операционной системы Windows Vista Microsoft решила сменить название c Monad на привычное нам сегодня PowerShell.

В ноябре 2006 года Microsoft выпустила Windows PowerShell под версией 1.0, которая включала в себя полную интеграцию с .NET Framework, поддержку Cmdlets (небольшие команды, работающие с объектами) и интеграцию с WMI (Windows Management Instrumentation). Однако PowerShell версии 1.0 еще не был предустановлен в Windows и поставлялся как отдельный компонент.

В 2009 году была выпущена версия 2.0, в которую были интегрированы такие функции, как удаленное выполнение команд и фоновое выполнение задач, добавлена поддержка модулей для расширения функционала и улучшен обработчик ошибок. Именно с версией 2.0 PowerShell был интегрирован в дистрибутивы Windows, начиная с Windows 7 и Windows Server 2008 R2. 

С тех пор было выпущено еще 6 основных релизов:

  • PowerShell 2.0 (2009)
  • PowerShell 3.0 (2012)
  • PowerShell 4.0 (2013)
  • PowerShell 5.0 (2016)
  • PowerShell Core 6.0 (2016–2020)
  • PowerShell 7 (2020)

На момент написания статьи актуальной является версия 7.5.0.

Архитектура и принципы работы PowerShell

Архитектура PowerShell

Архитектура PowerShell основана на следующих компонентах:

  • Командная оболочка

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

  • Язык сценариев

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

  • Платформа .NET

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

  • Модули и провайдеры

Модули — это пакеты, содержащие команды и функции. Позволяют расширять функциональность PowerShell. Провайдеры — это компоненты, которые предоставляют доступ к данным в различных хранилищах (например, файловая система, реестр, переменные среды).

Принципы работы PowerShell

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

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

Отличия PowerShell от командной строки (CMD)

Несмотря на схожесть, PowerShell и командная строка (CMD) — это два разных инструмента. PowerShell значительно мощнее и функциональнее обычной командной строки Windows. Основные отличия заключаются в следующем:

  • Функционал

CMD поддерживает минимальный и ограниченный набор команд. Также с помощью CMD можно запускать скрипты с расширением .bat. В свою очередь, PowerShell является объектно-ориентированной оболочкой и скриптовым языком и основан на модульной платформе .NET. 

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

  • Принцип работы

CMD работает с текстовыми командами (cd, dir, copy, del и т. д.) и обрабатывает строки с командами дальнейшей передачей в стандартный вывод.

PowerShell работает с объектами .NET, которые называются командлетами (cmdlets, например Get-Process, Get-Service, Stop-Process и т. д.), что позволяет передавать сложные структуры данных между командами без необходимости парсинга текста.

  • Автоматизация и запуск скриптов

С помощью CMD можно запускать скрипты с расширением .bat, однако они ограничены в возможностях.

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

vds

Установка PowerShell на Windows

Несмотря на то, что командная строка (cmd) и Powershell уже предустановлены во всех последних версиях Windows, PowerShell можно установить отдельно. 

Отдельная установка может понадобиться, если предустановленная версия отличается от последней доступной актуальной версии. 

Установить PowerShell в ОС Windows можно тремя разными способами:

  • Через Microsoft Store (только для ОС Windows 10 и Windows 11).
  • При помощи установочного файла с расширением .msi.
  • С помощью утилиты winget (winget должен быть установлен отдельно).

Microsoft Store

Данный метод установки поддерживается только на Windows 10 и Windows 11. Процесс установки для двух дистрибутивов идентичен.

  1. Запускаем приложение Microsoft Store и в поиске вводим «powershell». Существует 2 версии PowerShell — Обычная (стабильная) и Preview. Версия Preview является тестовой и может содержать ошибки, однако она позволяет ознакомиться с новым функционалом, который еще не доступен в обычной (стабильной) версии. 

Мы установим обычную стабильную версию:

Image11

  1. Для установки нажимаем на кнопку «Получить» и дожидаемся завершения установочного процесса:

Image21

Для запуска введите «powershell» в поиске Windows.

Также стоит обратить внимание, что при установке старая версия PowerShell не будет удалена. Чтобы отличить новую установленную версию от старой, достаточно посмотреть на имя приложения — новая версия называется PowerShell, а старая версия (она же предустановленная) называется Windows PowerShell:

Image3

MSI-пакет

Это более универсальный способ установки, так как подходит для более широкого спектра дистрибутивов, включая Windows 10 сборки 1607 и выше, Windows 11, Windows Server 2016 и выше. 

  1. Переходим на сайт «Майкрософт» и выбираем необходимый установщик в зависимости от используемой архитектуры — 64-битная, 86 (32-битная) или arm64:

Image51

  1. Далее запускаем скачанный файл и нажимаем на кнопку «Next».
  2. Выбираем место на диске куда будет установлен PowerShell или оставляем значение по умолчанию.
  3. При необходимости выбираем дополнительные опции:
    • Add PowerShell to Path Environment Variable — добавляет полный путь до исполняемого файла PowerShell в системную переменную окружения PATH.
    • Register Windows Event Logging Manifest — регистрирует событийный манифест (PowerShellCore.EventManifest.dll) в системе, что позволяет логировать ошибки и события PowerShell в «Просмотре событий Windows» (Event Viewer).
    • Enable PowerShell remoting — включает функцию PowerShell Remoting для управления компьютером удаленно при помощи WSMan (WinRM).
    • Disable Telemetry — отключает сбор телеметрии.
    • Add ‘Open here’ context menus to Explorer — добавляет пункт «Открыть в PowerShell» в контекстное меню проводника.
    • Add ‘Run with PowerShell 7’ context menu for PowerShell files — добавляет пункт «Запуск с PowerShell 7» (Run with PowerShell 7) в контекстное меню для .ps1-файлов.

Image13

  1. Далее установщик предложит включить использование службы Microsoft Update для получения актуальной версии PowerShell. Можно как согласиться, так и полностью отказаться от данной службы:

Image58

  1. На последнем шаге нажимаем на кнопку «Install, чтобы запустить процесс установки.
  2. После того как установка будет завершена, нажимаем на кнопку Finish».

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

Image23

Так выглядит окно запущенного PowerShell:

Image42

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

winget

winget (Windows Package Manager) — это встроенный менеджер пакетов в Windows 10 и Windows 11, который позволяет легко устанавливать, обновлять и удалять программы через командную строку. Является аналогом apt / yum / dnf в Linux-дистрибутивах.

По умолчанию winget уже предустановлен в Windows 10 1809 (сборка 17763) и выше, а также во всех версиях Windows 11. Windows Server 2019 не поддерживается, однако возможна установка на Windows Server 2022. Чтобы проверить, установлен ли winget в вашей версии Windows, необходимо выполнить следующую команду в PowerShell:

Get-AppPackage *Microsoft.DesktopAppInstaller*|select Name,PackageFullName

Image39

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

  1. Переходим на страницу проекта в GitHub.
  2. Находим в разделе «Releases» последний релиз — с пометкой latest. В данном случае это релиз с номером 1.9.25200. Скачиваем файл с расширением .msixbundle:

Image12

  1. winget входит в состав приложения «Установщик приложения», которое уже может быть установлено в вашей системе. Если при запуске установочного файла отображается сообщение, что такое приложение уже установлено, значит, winget уже присутствует в системе:

Image17

  1. Если же «Установщик приложения» отсутствует, установите его вручную, следуя инструкциям на экране. После завершения установки можно проверить версию winget и убедиться, что программа была установлена:
winget --version

Image60

  1. Для установки PowerShell сначала выясним, какие версии доступны. 
winget search Microsoft.PowerShell

Image59

Как и при установке из магазина Windows, доступны две версии: обычная (стабильная) и Preview (бета-версия).

  1. Установим обычную версию при помощи команды:
winget install --id Microsoft.PowerShell --source winget

Image62

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

Основы работы с PowerShell

Рассмотрим синтаксис PowerShell и работу с командлетами (cmdlets).

Командлеты (cmdlets)

В основу PowerShell заложена работа с командлетами.

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

Синтаксис командлетов следующий:

<глагол>-<существительное> [-Параметры]

Например:

  • Get-Process — Получить список процессов
  • Get-ChildItem -Path C:\Users — Отобразить файлы и директории в каталоге C:\Users.

При использовании командлетов в ответ они возвращают не просто текст, а объекты платформы .NET. Это предоставляет мощные возможности для обработки данных.

Переменные

Как и в любом другом языке программирования или командной оболочке, переменные в PowerShell предназначены для хранения различных объектов: строк, чисел, объектов, массивов, хэш-таблиц. Переменные обозначаются знаком $

Рассмотрим переменные на практике. Объявим две переменные: одну с именем myvar1 и содержащую строковой тип данных, и вторую — с именем myvar2 и содержащую числовой тип данных:

$myvar1 = “This is string variable”
$myvar2 = 32

Image54

Для вывода значения переменной используется оператор Write-Output:

Write-Output $myvar1
Write-Output $myvar2

Image47

PowerShell автоматически определяет тип данных, но при желании его можно задавать явно:

[string]$myvar1 = “This is string variable”
[int]$myvar2 = 32

Image36

Помимо хранения строковых и числовых данных, в переменных можно хранить массивы и хэш-таблицы (они же словари).

Создадим переменную var-array, в которой будет храниться массив цифр от 1 до 5:

$var_array = @(1, 2, 3, 4, 5)

Чтобы вывести значения объектов, хранящихся в массиве, необходимо написать имя переменной и в квадратных скобках указать порядковый номер объекта. Как и в других языках программирования, счет объектов начинается с 0, поэтому для вывода цифры 1 необходимо ввести 0:

$var_array[0]

Image48

Создадим другую переменную с именем var-hash, в которой будет храниться хэш-таблица или словарь данных. Структура данных имеет вид: Ключ: Значение.

$var_hash = @{ "ID" = 1; "Name" = "Alex" }

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

$var_hash["Name"]

Image29

Также с переменными можно производить различные арифметические операции, например, сложение:

$first_num = 20
$second_num = 30
$sum = $first_num + $second_num

Write-Output $sum

Image37

Операторы

В PowerShell присутствуют следующие операторы:

  • Арифметические операторы
  • Операторы сравнения
  • Логические операторы
  • Операторы массивов

Рассмотрим их на практике.

Арифметические операторы

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

Оператор

Описание

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Остаток от деления

$a = 15
$b = 10
$c = $a + $b    # Сложение
$d = $a - $b    # Вычитание
$e = $a * $b    # Умножение
$f = $a / $b     # Деление
$g = $a % $b  # Остаток от деления

Write-Output $c
Write-Output $d
Write-Output $e
Write-Output $f
Write-Output $g

Image53

Операторы сравнения

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

Оператор

Описание

-eq

Равно

-ne

Не равно

-gt

Больше

-ge

Больше или равно

-lt

Меньше

-le

Меньше или равно

$c = 25
$d = 45
$c -eq $d  # Равно (Equal)
$c -ne $d  # Не равно (Not Equal)
$c -gt $d  # Больше (Greater Than)
$c -lt $d   # Меньше (Less Than)
$c -ge $d # Больше или равно (Greater or Equal)
$c -le $d # Меньше или равно (Less or Equal)

Image49

Логические операторы

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

Оператор

Описание

-and

Логическое И

-or

Логическое ИЛИ

-not или !

Логическое НЕ

($a -gt 5) -and ($b -lt 10)  # Логическое "И"
($a -gt 5) -or ($b -gt 10)   # Логическое "ИЛИ"
-not ($a -eq $b)             # Логическое "НЕ"

Image43

Условные конструкции

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

Операторы if elseif else

Используются для выполнения кода в зависимости от условия. Рассмотрим использование операторов на примере ниже:

$number = 10

if ($number -gt 5) {
    Write-Output "Число больше 5"
} elseif ($number -eq 5) {
    Write-Output "Число равно 5"
} else {
    Write-Output "Число меньше 5"
}

Image24

Циклы

Циклы используются для повторного выполнения блока кода, пока выполняется определенное условие. В PowerShell есть несколько видов циклов:

  • for — классический цикл с итератором.
  • foreach — перебирает элементы массива или коллекции.
  • while — выполняется, пока условие истинно.
  • do-while — выполняется хотя бы один раз, затем проверяет условие.
  • do-until — выполняется, пока условие ложно.

Цикл for

Используется, когда известно количество итераций.

for ($i=0; $i -lt 5; $i++) {
    Write-Output "Итерация $i"
}

Image61

Цикл while

Выполняется, пока условие остается True (пока условие истинно).

$count = 0
while ($count -lt 3) {
    Write-Output "Счетчик: $count"
    $count++
}

Image38

Цикл foreach

Используется для перебора элементов массива.

$numbers = @(1,2,3,4,5)
foreach ($num in $numbers) {
    Write-Output "Число: $num"
}

Image50

Цикл do-while

Гарантирует хотя бы одну итерацию (сначала выполняет, потом проверяет).

$i = 0
do {
    Write-Output "Число $i"
    $i++
} while ($i -lt 5)

Image20

Цикл do-until

Выполняется до тех пор, пока условие не станет True.

$i = 1

do {
    Write-Output "Итерация: $i"
    $i++
} until ($i -gt 3)

Image28

Функции

Функции в PowerShell позволяют объединять блоки кода и многократно их использовать. Они могут принимать параметры и возвращать значения. 

Функции создаются с помощью ключевого слова function:

function SayHello {
    Write-Output "Привет, PowerShell!"
}
SayHello

Image31

Функция с параметром

function Greet($name) {
    Write-Output "Привет, $name!"
}

Greet "Иван"

Image64

Функция с несколькими параметрами

function SumNumbers($a, $b) {
    return $a + $b
}

$result = SumNumbers 5 10
Write-Output "Сумма: $result"

Image34

Работа с файлами и директориями

PowerShell отлично подходит для работы с файлами и директориями. Рассмотрим некоторые полезные команды для работы в ОС Windows.

  • Получение списка файлов
Get-ChildItem C:\Users

Image7

  • Создание папки
New-Item -Path "C:\TestFolder" -ItemType Directory

Image9

  • Создание файла
New-Item -Path "C:\TestFolder\file.txt" -ItemType File

Image10

  • Запись в файл
Set-Content -Path "C:\TestFolder\file.txt" -Value "Hello, world!"

Image5

  • Чтение файла
Get-Content "C:\TestFolder\file.txt"

Image57

  • Копирование файла
Copy-Item -Path "C:\TestFolder\file.txt" -Destination "C:\Users\file.txt"

Image6

  • Перемещение файла

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

Move-Item -Path "C:\TestFolder\file.txt" -Destination "C:\Windows\file.txt"

Image41

  • Удаление файла
Remove-Item -Path "C:\TestFolder\file.txt"

Image46

Работа с процессами и службами

  • Получение списка процессов
Get-Process

Image26

  • Завершение процесса

Например, завершим процесс «Блокнот»:

Stop-Process -Name notepad -Force

Image8

  • Получение списка служб
Get-Service

Image27

  • Запуск службы 

Для примера запустим службу wuauserv:

Start-Service -Name wuauserv

Image65

  • Остановка службы
Stop-Service -Name wuauserv

Image25

Автоматизация задач с помощью PowerShell

PowerShell идеально подходит для автоматизации многих задач в Windows. Рассмотрим несколько примеров.

Мониторинг процесса и его автоматический перезапуск

Первая задача, которую мы рассмотрим, заключается в отслеживании процесса и его автоматическом перезапуске, если он перестанет отвечать:

$processName = "notepad"

while ($true) {
    if (-not (Get-Process -Name $processName -ErrorAction SilentlyContinue)) {
        Write-Output "$processName не работает! Перезапуск..."
        Start-Process $processName
    }
    Start-Sleep -Seconds 10
}

Image32

Скрипт выше проверяет, запущен ли процесс notepad («Блокнот»). Если процесс не найден, то запускает его и проверяет его статус каждые 10 секунд.

Удаление старых файлов

Удаление старых и неактуальных файлов может освободить место на диске. В примере ниже скрипт удаляет файлы, которые старше одного дня, в директории C:\TestFolder:

$folder = "C:\TestFolder"
$days = 1
$limit = (Get-Date).AddDays(-$days)

Get-ChildItem -Path $folder -Recurse | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force
Write-Output "Удалены файлы старше $days дней"

Image30

Запуск процесса по расписанию

Настроим автоматический запуск программы «Блокнот» каждый день в 9:00 утра:

$action = New-ScheduledTaskAction -Execute "notepad.exe"
$trigger = New-ScheduledTaskTrigger -Daily -At 9am
Register-ScheduledTask -TaskName "OpenNotepad" -Action $action -Trigger $trigger
Write-Output "Задача добавлена в планировщик!"

Image55

Безопасность в PowerShell

PowerShell обладает встроенным функционалом по обеспечению безопасности. Рассмотрим его более подробно.

Политики выполнения (Execution Policies)

По умолчанию PowerShell блокирует выполнение скриптов. Чтобы проверить текущую политику, необходимо использовать команду:

Get-ExecutionPolicy

Image16

Типы политик встроенных в PowerShell:

  • Restricted — Запрещено выполнять скрипты (по умолчанию).
  • AllSigned — Разрешает только подписанные скрипты.
  • RemoteSigned — Локальные скрипты выполняются, загруженные из сети должны быть подписаны.
  • Unrestricted — Можно запускать любые скрипты, но при запуске загруженных файлов появляется предупреждение.
  • Bypass — Полностью отключает защиту (НЕ рекомендуется).

Для изменения политики требуются права администратора. Команда для изменения следующая:

Set-ExecutionPolicy Unrestricted 

Image15

Подписание скриптов

Чтобы предотвратить запуск вредоносного кода в скриптах, в PowerShell присутствует возможность подписания скриптов. 

Заранее создаем тестовый скрипт в директории C:\TestFolder со следующим содержимым:

$path = "C:\Users"

if (Test-Path $path) {
    try {
        Get-ChildItem -Path $path -Force
    } catch {
        Write-Host "Access denied to $path"
    }
} else {
    Write-Host "The path does not exist: $path"
}

Сохраняем файл с именем и расширением script.ps1.

Далее подписываем скрипт:

  1. Создаем самоподписанный сертификат:
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyPowerShellCert" -KeyUsage DigitalSignature -KeySpec Signature -NotAfter (Get-Date).AddYears(5) -CertStoreLocation "Cert:\CurrentUser\My"

Image56

  1. Выведем данные сертификата. В частности, нам необходим его Thumbprint (отпечаток), который пригодится далее.
Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert

Image1

  1. Теперь необходимо добавить сгенерированный сертификат в папку корневых сертификатов. Открываем «Диспетчер сертификатов» через PowerShell:
certmgr.msc

Image45

  1. Переходим в раздел «Personal» (сертификаты пользователя), кликаем по нужному сертификату правой кнопкой мыши и выбираем пункт «Export» (Экспорт):

Image67

  1. В открывшемся меню нажимаем на кнопку «Next». Выбираем параметр «Не экспортировать закрытый ключ»:

Image22

Выбираем формат Base-64:

Image44

Нажимаем «Next».

Дальше нажимаем на кнопку «Browse» и выбираем директорию, куда будет сохранен сертификат.

Нажимаем «Finish», чтобы завершить экспорт.

  1. Открываем сертификат и нажимаем на кнопку «Install Certificate...»:

Image18

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

Image63

Для установки в конкретное хранилище сертификатов выбираем пункт «Place all certificates in the following store»:

Image52

Выбираем «Trusted Root Certification Authorities»:

Image66

Завершаем установку сертификата нажатием на кнопку «Finish».

  1. При появлении окна с предупреждением нажимаем «Yes»:

Image35

  1. Подписываем скрипт script.ps1, размещенный в директории C:\TestFolder. Для этого вводим ранее полученный отпечаток после опции Thumbprint -eq.
$cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.Thumbprint -eq "B8D1657CD8D09A2B80BEFEEF378C17DA2FE41352" }
Set-AuthenticodeSignature -FilePath "C:\TestFolder\script.ps1" -Certificate $cert

Image33

  1. Проверяем, что скрипт был успешно подписан:
Get-AuthenticodeSignature -FilePath "C:\TestFolder\script.ps1"

Image2

Подпись был успешно создана.

  1. Запустим скрипт:

Image14

Теперь попробуем запустить неподписанный скрипт при использовании политики AllSigned, разрешающей запуск только подписанных скриптов. 

Меняем политику на AllSigned:

Set-ExecutionPolicy AllSigned -Scope CurrentUser

Создаем новый скрипт и попытаемся его запустить:

Image40

Система вернула ошибку, так как скрипт не подписан.

Надежные VDS/VPS для ваших проектов

Заключение

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

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
26 февраля 2025 г.
122
20 минут чтения
Средний рейтинг статьи: 3
Пока нет комментариев