PowerShell для начинающих администраторов: команды, справка и примеры
Основные типы команд в PowerShell
Чаще всего вы будете сталкиваться со следующими типами команд:
- Alias — у команды PowerShell может быть псевдоним, выполняя который вы на самом деле выполните эту команду. Про псевдонимы у меня есть другая статья .
- Function — функции написаны на PowerShell, есть встроенные функции, но вы можете создавать и свои.
- Cmdlet — встроенные команды PowerShell, обычно реализованные на .NET (чаще всего на C#).
Получить список команд можно с помощью командлета Get-Command:
Get-Command
CommandType Name Version Source
----------- ---- ------- ------
Alias Add-AppPackage 2.0.1.0 Appx
Alias Add-AppPackageVolume 2.0.1.0 Appx
Alias Add-AppProvisionedPackage 3.0 Dism
Alias Add-ProvisionedAppPackage 3.0 Dism
Alias Add-ProvisionedAppxPackage 3.0 Dism
Alias Add-ProvisioningPackage 3.0 Provisioning
Alias Add-TrustedProvisioningCertificate 3.0 Provisioning
Alias Apply-WindowsUnattend 3.0 Dism
*** вывод сократил ***
Вы можете заметить, что команды состоят из глагола и существительного. Например Get — это глагол, а Command — существительное.
У команды Get-Command есть опции:
-Noun <существительное>— показать команды только с этим существительным;-Verb <глагол>— показать команды только с этим глаголом;-Name <команда>— вывести определённую команду.
Например:
Get-Command -Noun Command
CommandType Name Version Source
----------- ---- ------- ------
Function Find-Command 1.0.0.1 PowerShellGet
Cmdlet Get-Command 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Invoke-Command 3.0.0.0 Microsoft.PowerShell.Core
Cmdlet Measure-Command 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Show-Command 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Trace-Command 3.1.0.0 Microsoft.PowerShell.Utility
Get-Command -Verb Get
CommandType Name Version Source
----------- ---- ------- ------
Alias Get-AppPackage 2.0.1.0 Appx
Alias Get-AppPackageDefaultVolume 2.0.1.0 Appx
Alias Get-AppPackageLastError 2.0.1.0 Appx
Alias Get-AppPackageLog 2.0.1.0 Appx
Alias Get-AppPackageManifest 2.0.1.0 Appx
Alias Get-AppPackageVolume 2.0.1.0 Appx
Alias Get-AppProvisionedPackage 3.0 Dism
Alias Get-DiskSNV 2.0.0.0 Storage
*** вывод сократил ***
Справка по командам
У PowerShell есть встроенная справка. Так как модули и командлеты PowerShell обновляются, то и встроенную справку тоже нужно периодически обновлять. Справка не обновляется автоматически, а для её обновления нужно использовать командлет Update-Help. Но запускать эту команду нужно от имени администратора, также обязательно нужен доступ в интернет.
Когда вы запустите команду Update-Help, вверху терминала появится такая запись:

После этого, ваша справочная информация будет обновлена. Некоторые справочные материалы на русском языке могут отсутствовать.
Получить справку по команде можно с помощью Get-Help, например:
Get-Help Get-Process
ИМЯ
Get-Process
ОПИСАНИЕ
Gets the processes that are running on the local computer or a remote computer.
СИНТАКСИС
Get-Process [-ComputerName <System.String[]>] [-FileVersionInfo <System.Management.Automation.SwitchParameter>] [-Module <System.Manage
ment.Automation.SwitchParameter>] [[-Name] <System.String[]>] [<CommonParameters>]
*** вывод сократил ***
Get-Help имеет дополнительные опции для расширения справки:
Get-Help <Команда> -Examples- примеры;Get-Help <Команда> -Detailed- дополнительные сведения;Get-Help <Команда> -Full- технические сведения;Get-Help <Команда> -Online- получение справки в интернете (откроется веб-браузер).
Конвейер (pipeline)
Символ | передаёт результат одной команды в другую. Например:
Get-Process | Sort-Object WS -Descending | Select -First 10
Get-Process- получает список всех процессов.Sort-Object WS -Descending- сортирует процессы по свойствуWS(Working Set - объёму используемой памяти) по убыванию.Select -First 10- оставляет только первые 10 процессов.
PowerShell передаёт между командами не текст, а объекты. Get-Member позволяет посмотреть свойства и методы этих объектов.
Get-Process | Get-Member
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
NPM AliasProperty NPM = NonpagedSystemMemorySize64
PM AliasProperty PM = PagedMemorySize64
SI AliasProperty SI = SessionId
VM AliasProperty VM = VirtualMemorySize64
WS AliasProperty WS = WorkingSet64
*** вывод сократил ***
Полезные команды PowerShell
Пришло время перечислить некоторые PowerShell команды, которые могут пригодиться для системного администратора.
- Получение информации о системе. ⏱Выполнение может занять 10-30 сек.
Get-ComputerInfo
- Топ 10 процессов по потреблению памяти.
Get-Process | Sort-Object WS -Descending | Select -First 10
- Получить хеш файла. Бывает полезно чтобы проверить не побился ли файл (например: образ или архив).
Get-FileHash -Path <файл> -Algorithm SHA256
- Как проверить порт PowerShell (открыт или закрыт)? Это достаточно востребованная задача для системного администратора.
Test-NetConnection -ComputerName <ip> -Port <port>
- Переключить неопознанную сеть в частную. Кстати, переключить сеть в DomainAuthenticated принудительно нельзя.
# узнаём имя интерфейса и текущий профиль (InterfaceAlias / NetworkCategory)
Get-NetConnectionProfile
# переключим сеть на Private (например, интерфейс называется Ethernet-2):
Set-NetConnectionProfile -InterfaceAlias "Ethernet-2" -NetworkCategory Private
- Завершить процесс по имени. Если процессов несколько - будут завершены все процессы с этим именем.
Stop-Process -Name <процесс>
- Завершить процесс по PID.
Stop-Process -Id <PID>
- Список служб.
Get-Service
- Перезапустить службу, например диспетчер печати.
Restart-Service -Name Spooler
Итог
Если вы только начинаете изучать PowerShell — попробуйте сначала освоить Get-Help, Get-Command и конвейер (|). Это база, без которой дальше будет сложно.
Если понравилась статья, подпишись на мой канал в VK или Telegram .