Начало работы с PowerShell
PowerShell — это командная оболочка + среда для написания сценариев, созданная Microsoft для систем Windows и в первую очередь используемая для задач системного администрирования и автоматизации.
ВWindows 11Там просто выполните поиск прямо в меню «Пуск»PowerShellи всё.

Распространённые ярлыки включают (для 64-битных систем):
| Имя ярлыка | Описание |
|---|---|
| Windows PowerShell | 64-битная версия командной строки |
| Windows PowerShell ISE | 64-битный графический редактор сценариев |
| Windows PowerShell (x86) | 32-битная версия командной строки |
| Windows PowerShell ISE (x86) | 32-битный графический редактор сценариев |
⚠️ Примечание: сама Windows 11 не поддерживает 32-битные системы, но всё ещё включает x86-версию PowerShell для совместимости с устаревшими программами.
Способы запуска PowerShell
Обычный способ запуска
Щёлкните ярлык Windows PowerShell, чтобы запустить консоль PowerShell.
В строке заголовка консоли PowerShell будет отображаться "Windows PowerShell".

Примечание:Некоторые команды могут выполняться нормально при запуске PowerShell от имени обычного пользователя, но сам PowerShell не участвует в контроле учётных записей пользователей (UAC) и не может запрашивать у пользователя повышение прав.
Пояснение по контролю учётных записей пользователей (UAC)
Что делает UAC:Функция безопасности Windows, которая предотвращает запуск вредоносного кода с повышенными привилегиями.
Ограничения прав обычного пользователя: при запуске от имени обычного пользователя попытка выполнения команд, требующих прав администратора, приведёт к ошибке.
Например, остановка службы Windows:
Stop-Service -Name W32Time
Пример сообщения об ошибке:
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to
the following error: Cannot open W32Time service on computer '.'.
At line:1 char:1
+ Stop-Service -Name W32Time
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (System.ServiceProcess.ServiceCon
troller:ServiceController) [Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Comm
ands.StopServiceCommand
Решение: необходимозапустить PowerShell от имени пользователя с правами локального администратора.Настроена вторая учётная запись пользователя домена, в соответствии с принципом наименьших привилегий; она не является администратором домена и не имеет повышенных привилегий в домене.
Шаги:
- Щёлкните правой кнопкой мыши ярлык Windows PowerShell
- Выберите "Запуск от имени администратора"

Системная подсказка:Так как вы в данный момент вошли как обычный пользователь, Windows запросит ввод учетных данных локального администратора.

Подтверждение повышения прав:В заголовке окна PowerShell с повышенными правами отображается "Администратор: Windows PowerShell".

Результат:Выполнение команд, требующих прав администратора, в PowerShell с повышенными правами больше не будет вызывать ошибок UAC.
Принцип повышения прав: Повышайте права PowerShell до администратора только при крайней необходимости.
Удаленные компьютеры:При работе с удаленными компьютерами нет необходимости повышать права PowerShell. Повышение прав влияет только на локальные команды.
Закрепление ярлыков:Вы можете закрепить ярлык PowerShell или Windows Terminal на панели задач для быстрого запуска:

Безопасный запуск PowerShell с повышенными правами:Если вам нужно запустить PowerShell с повышенными правами, удерживайте клавишу Shift, щелкая правой кнопкой мыши по закрепленному значку PowerShell на панели задач, и выберите "Запуск от имени администратора"

Руководство по определению версии PowerShell и политики выполнения
1. Проверка версии PowerShell
PowerShell предоставляет автоматическую переменную$PSVersionTable, которая содержит сведения о версии и связанную информацию о текущем сеансе PowerShell.
$PSVersionTable
Вывод будет выглядеть примерно так:
Name Value
---- -----
PSVersion 5.1.22621.2428
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.22621.2428
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Примечания к версии
- Windows PowerShell 5.1 предустановлен в текущих поддерживаемых версиях Windows и является рекомендуемой версией для использования.
- PowerShell 7 (кроссплатформенная версия) не является заменой Windows PowerShell 5.1, а представляет собой отдельный продукт, устанавливаемый параллельно с ним.
- PowerShell 6 (также известный как PowerShell Core) больше не поддерживается.
2. Понимание политики выполнения
Политика выполнения — это функция безопасности PowerShell, которая управляет условиями, при которых могут выполняться сценарии, предотвращая случайный запуск вредоносных сценариев.
Примечание. Политика выполнения не является границей безопасности; опытные пользователи могут её обойти.
Область действия политики выполнения
- Её можно задать для локального компьютера (LocalMachine), текущего пользователя (CurrentUser) или текущего сеанса (Process).
- Ею также можно управлять для пользователей и компьютеров через групповую политику.
Стандартные политики выполнения по умолчанию в Windows
| Версия операционной системы | Политика выполнения по умолчанию |
|---|---|
| Windows Server 2022 | RemoteSigned |
| Windows Server 2019 | RemoteSigned |
| Windows Server 2016 | RemoteSigned |
| Windows 11 | Restricted |
| Windows 10 | Restricted |
RestrictedУказывает, что по умолчанию выполнение сценариев запрещено.
3. Запрос текущей политики выполнения
Запросите текущую политику:
Get-ExecutionPolicy
Вывод будет выглядеть примерно так:
Restricted
Выведите параметры политики выполнения для всех областей:
Get-ExecutionPolicy -List
Вывод будет выглядеть примерно так:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
4. Примеры того, как политика выполнения влияет на выполнение сценариев
Предположим, есть файл сценарияGet-TimeService.ps1; запуск команды непосредственно в интерактивной командной строке работает нормально:
Get-Service -Name W32Time
Однако при запуске той же команды из сценария PowerShell вернёт ошибку.
.\Get-TimeService.ps1
Сообщение об ошибке:
.\Get-TimeService.ps1 : File C:\tmp\Get-TimeService.ps1 cannot be loaded
because running scripts is disabled on this system. For more information,
see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Get-TimeService.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
5. Изменение политики выполнения
1. Установите RemoteSigned (рекомендуется)
Позволяет запускать локальные скрипты и удалённые скрипты, подписанные доверенными издателями.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Чтобы изменить политику выполнения для локального компьютера (LocalMachine), необходимо запустить PowerShell от имени администратора.
- При изменении появится запрос на подтверждение:
Do you want to change the execution policy? [Y] Yes [A] Yes to All ...
2. Изменить политику выполнения только для текущего пользователя (права администратора не требуются)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
6. Распространённые сообщения об ошибках и решения
Ошибка при изменении политики LocalMachine без повышенных прав администратора:
Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
Решение: повторите попытку после запуска PowerShell от имени администратора или измените политику только для текущего пользователя.
7. Проверка после изменения
После изменения политики выполнения наRemoteSigned, запустите скрипт:
.\Get-TimeService.ps1
Вывод:
Status Name DisplayName ------ ---- ----------- Running W32Time Windows Time
8. Примечания
- Скрипты — это обычные текстовые файлы с расширением
.ps1。
- Для написания скриптов рекомендуется использоватьVisual Studio Codeили текстовый редактор.
- Перед изменением политики выполнения обязательно ознакомьтесь с официальной документацией
about_Execution_Policiesчтобы понять связанные риски безопасности.
Другие расширения
.ps1。about_Execution_Policiesчтобы понять связанные риски безопасности.