PowerShell для начинающих администраторов: команды, справка и примеры

Из статьи вы узнаете про встроенную справку PowerShell и как её обновлять. А также, в статье есть список полезных команд 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 .