PowerShell переменные

powershell

В PowerShell, как и в любом другом языке программирования есть переменные. В этой статье разберём особенности переменных в PowerShell, например все переменные это объекты и переменные имеют динамический тип. Для более подробной информации обратитесь к документации.

Читать далее

Изучение команд PowerShell

windows логотип

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

Команды PowerShell и их типы

В PowerShell есть 3 типа команд:

  • Alias — у команды PowerShell может быть псевдоним, выполняя который вы на самом деле выполните эту команду. Про псевдонимы у меня есть другая статья, которую вы можете найти тут.
  • Function — функции написаны на PowerShell, есть встроенные функции, но вы можете создавать и свои;
  • Cmdlet — командлеты написаны на C# разработчиками MicroSoft.

Получить список команд можно с помощью командлета Get-Command:

PS C:\WINDOWS\system32> 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 <команда> — вывести определённую команду.

Например:

PS C:\WINDOWS\system32> 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


PS C:\WINDOWS\system32> 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 есть встроенная справка, но так как Windows периодически обновляется, то и справку нужно обновлять. Справка автоматически сама не обновляется, а для её обновления нужно использовать командлет Update-Help. Но запускать эту команду нужно в окне PowerShell запущенном от имени администратора.

Когда вы запустите эту команду в верху терминала появится такая запись, при этом эта запись будет расположена поверх уже введённых команд:

Выполнение команды PowerShell "Update-Help"

После этого, ваша справочная информация будет обновлена. Но возможно некоторые справки на русском языке не будут присутствовать, тогда вы увидите об этом информацию.

Получение справки по командам

Получить справку по какой-то команде можно с помощью командлета Get-Help, например:

PS C:\WINDOWS\system32> Get-Help Get-Command

ИМЯ
    Get-Command

ОПИСАНИЕ
    Gets all commands.


СИНТАКСИС
    Get-Command [[-Name] <System.String[]>] [[-ArgumentList] <System.Object[]>] [-All] [-CommandType {Alias | Function | Filter | Cmdlet | ExternalScript | Application | Script
    | Workflow | Configuration | All}] [-FullyQualifiedModule <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported] [-Module <System.String[]>] [-ParameterName
    <System.String[]>] [-ParameterType <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>] [<CommonParameters>]

    Get-Command [[-ArgumentList] <System.Object[]>] [-All] [-FullyQualifiedModule <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported] [-Module <System.String[
    ]>] [-Noun <System.String[]>] [-ParameterName <System.String[]>] [-ParameterType <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo] [-Syntax] [-TotalCount <Syst
    em.Int32>] [-Verb <System.String[]>] [<CommonParameters>]

*** вывод сократил ***

Этот командлет тоже имеет дополнительные опции для расширения справки:

  • get-help <Команда> -examples — примеры;
  • get-help <Команда> -detailed — дополнительные сведения;
  • get-help <Команда> -full — технические сведения;
  • get-help <Команда> -online — получение справки в интернете (при этом у вас откроется веб-браузер).

Вот, например, online справка по команде Update-Help.