Основные концепции PowerShell
PowerShell — это не просто инструмент командной строки; его философия проектирования, функциональная архитектура и использование значительно отличаются от традиционных оболочек.
1. Командлет: наименьшая единица команды
Что такое командлет?
Командлет (произноситсякомандлет) — это самая базовая единица команды в PowerShell. Командлеты — это классы на основе .NET, которые возвращают один или несколькообъектов .NET。
Соглашение об именовании: глагол-существительное
Каждый командлет следует соглашению об именованииглагол-существительное, например:
| Командлет | Значение |
|---|---|
Get-Process |
Получить информацию о процессе |
Set-Item |
Установить значение элемента ресурса |
Remove-Item |
Удалить файлы, ключи реестра и т. д. |
New-User |
Создать нового пользователя (если установлен модуль AD) |
PowerShell поставляется с сотнями командлетов, а сторонние модули могут определять многие другие.
Пример
Get-Service Get-ChildItem -Path C:\Windows
Вы также можете использоватьGet-Commandчтобы просмотреть все доступные командлеты:
Get-Command -CommandType Cmdlet
2. Конвейер объектов
В чём отличие от конвейеров UNIX/Linux?
В традиционных оболочках конвейер (|) передаёт текстовые строки. Однако в PowerShell,конвейер передаёт полные объекты .NET。
Это означает, что можно сохранять структурированные данные (свойства, методы) для дальнейшей обработки.
Пример: фильтрация процессов по использованию CPU
Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object Name, CPU
В приведённой выше команде:
Get-ProcessПолучить все процессы (возвращает объекты)Where-ObjectФильтровать процессы с загрузкой ЦП выше 100Select-ObjectВыводить толькоNameиCPUполе
Красота передачи объектов по конвейеру
Вам не нужно использовать такие инструменты, какawk、cut、grepчтобы "разбирать" вывод; вместо этого вы работаете напрямую со свойствами объектов.
3. Поставщики и PSDrive: абстракция дисков ресурсов
PowerShell предоставляет унифицированный способ доступа к ресурсам:модель поставщиков, которая сопоставляет различные ресурсы с виртуальными дисками (PSDrive), точно так же, какC:работа с диском.
Распространённые типы поставщиков
| Provider | Пример диска | Описание |
|---|---|---|
| FileSystem | C:, D: |
Локальная файловая система |
| Реестр | HKLM:, HKCU: |
Реестр Windows |
| Окружение | Env: |
Переменные среды |
| Сертификат | Cert: |
Хранилище сертификатов |
| Функция | Function: |
Функции в текущем сеансе |
| Переменная | Variable: |
Определённые в данный момент переменные |
| Псевдоним | Alias: |
Псевдонимы команд |
Пример: работа с реестром
Get-ChildItem HKLM:\Software\Microsoft
Просматривайте реестр так же, как папки.
4. Скрипты и модули: организация и повторное использование
Скрипты (.ps1)
- Скрипты PowerShell — это текстовые файлы с
.ps1расширение - Они содержат последовательность команд, управление потоком, функции и т. д.
Модули (.psm1 / .psd1)
Модуль — это повторно используемая функциональная единица в PowerShell. Он может быть:
- a
.psm1файл (скрипт модуля) - папка, содержащая
.psd1манифест (расширенный модуль)
Поддержка модулей:
- Автозагрузка(автоматически загружается, когда используются его функции)
- Версионирование
- Объявления зависимостей
Просмотреть все модули в системе:
Get-Module -ListAvailable
Импортировать модуль:
Import-Module Az
5. Политика выполнения
Чтобы предотвратить выполнение вредоносных скриптов, PowerShell ввёлполитику выполнения(Execution Policy), которая ограничивает.ps1поведение выполнения файлов скриптов.
Общие типы политик
| Политика | Значение |
|---|---|
| Restricted | По умолчанию; запуск скриптов запрещён |
| RemoteSigned | Разрешает запуск локальных скриптов; удалённые скрипты должны быть подписаны |
| AllSigned | Все скрипты должны быть подписаны |
| Bypass | Unrestricted; не рекомендуется для продакшена |
Настройка политики выполнения
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
⚠️ Примечание: Политика выполнения влияет только на файлы скриптов; она не ограничивает команды, введённые вручную.
6. Удалённое управление (PowerShell Remoting)
PowerShell Remoting поддерживает удаленное подключение к другому компьютеру и выполнение команд черезWS-MAN (на основе WinRM)илиSSHпротокол.
Включение WinRM (в Windows)
Enable-PSRemoting -Force
Часто используемые команды
# 建立远程会话
Enter-PSSession -ComputerName Server01
# 批量执行命令
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service }
Кроссплатформенное удаленное взаимодействие с поддержкой SSH
Enter-PSSession -HostName linux01 -User user1 -SSHTransport
7. Конфигурация требуемого состояния (DSC)
DSC (Конфигурация требуемого состояния) — этодекларативная платформа конфигурации PowerShell, используемая для определения "желаемого состояния" системы.
Это позволяет:
- Определять состояния ресурсов с помощью сценариев конфигурации (например, служба должна быть запущена, файл должен существовать)
- Автоматически приводить компьютер к этому состоянию
- Обнаруживать отклонения и автоматически устранять их
Как использовать
- Написать файл конфигурации (
.ps1) - Скомпилировать его в MOF-файл
- Развернуть с использованием режима Push или Pull
DSC особенно полезен для крупномасштабной настройки серверов, проверок соответствия и автоматизированного развёртывания.
8. Обнаружение команд и справочная система
PowerShell предоставляет богатую справочную систему, которая позволяет легко изучать команды:
Get-Help Get-Process: Просмотр справки по командеGet-Command: Список всех командGet-Member: Просмотр свойств и методов объектаGet-Help about_*: Просмотр встроенных справочных документов (таких какabout_Execution_Policies)
Пример: Просмотр структуры объекта
Get-Process | Get-Member
Итог
| Концепция | Ключевое слово | Краткое описание | |
|---|---|---|---|
| Командлет | verb-noun |
Наименьшая единица выполнения, основанная на .NET | |
| Конвейер | ` | ` | Передаёт объекты, а не текст |
| Provider | FileSystem, Env: |
Унифицированный доступ к различным ресурсам | |
| Модуль | .psm1, .psd1 |
Организует коллекции многократно используемых команд | |
| Политика выполнения | Set-ExecutionPolicy |
Управляет разрешениями на выполнение сценариев | |
| Удалённое управление | Enter-PSSession |
Удалённое выполнение команд | |
| DSC | Configuration |
Декларативная платформа конфигурации системы | |
| Система справки | Get-Help |
Встроенная система документации |