sthArgumentCompleter — модуль PowerShell для работы с механизмами завершения аргументов, зарегистрированными при помощи команды Register-ArgumentCompleter

Команда Register-ArgumentCompleter позволяет регистрировать механизмы завершения аргументов обоих типов — Custom и Native, однако же у нас нет какой-либо встроенной возможности для получения информации о тех механизмах, что уже зарегистрированны в текущей сессии, или же для удаления некоторых из них.

sthArgumentCompleter — это модуль для работы с механизмами завершения аргументов, зарегистрированными при помощи команды Register-ArgumentCompleter.

В модуль входят следующие функции:

Get-CustomArgumentCompleter — Получает механизмы завершения аргументов типа Custom.

Get-NativeArgumentCompleter — Получает механизмы завершения аргументов типа Native.

Get-CustomArgumentCompleterScriptBlock — Получает блок сценария механизма завершения аргументов типа Custom.

Get-NativeArgumentCompleterScriptBlock — Получает блок сценария механизма завершения аргументов типа Native.

Remove-CustomArgumentCompleter — Удаляет указанные механизмы завершения аргументов типа Custom.

Remove-NativeArgumentCompleter — Удаляет указанные механизмы завершения аргументов типа Native.

Clear-CustomArgumentCompleters — Удаляет все зарегистрированные механизмы завершения аргументов типа Custom.

Clear-NativeArgumentCompleters — Удаляет все зарегистрированные механизмы завершения аргументов типа Native.

Как его установить?

Вы можете установить модуль sthArgumentCompleter из PowerShell Gallery:

Install-Module sthArgumentCompleter

Также вы можете найти его на GitHub:
https://github.com/sethvs/sthArgumentCompleter

Как с ним работать?

Get-CustomArgumentCompleter

Пример 1: Получение всех механизмов завершения аргументов типа Custom
Команда получает все механизмы завершения аргументов типа Custom, зарегистрированные в текущей сессии.

Get-CustomArgumentCompleter

CommandName   ParameterName ScriptBlock
-----------   ------------- -----------
Get-Something Name          …
Do-Something  Action        …
              SomeParameter …

Пример 2: Получение указанных механизмов завершения аргументов типа Custom
Команда получает указанный механизм завершения аргументов типа Custom.

Get-CustomArgumentCompleter -Name Get-Something:Name

CommandName   ParameterName ScriptBlock
-----------   ------------- -----------
Get-Something Name          …

Пример 3: Получение механизмов завершения аргументов типа Custom и отображение их блоков сценария в развернутом виде
Команда получает указанный механизм завершения аргументов типа Custom, отображая его блок сценария в развернутом виде.

Get-CustomArgumentCompleter -Name Get-Something:Name -ExpandScriptBlocks

CommandName   ParameterName ScriptBlock
-----------   ------------- -----------
Get-Something Name
                            $names = 'NameOne', 'NameTwo', 'NameThree'

                            foreach ($name in $names)
                            {
                                if ($name -like "$wordToComplete*")
                                {
                                    [System.Management.Automation.CompletionResult]::new($name)
                                }
                            }

Get-NativeArgumentCompleter

Пример 1: Получение всех механизмов завершения аргументов типа Native
Команда получает все механизмы завершения аргументов типа Native, зарегистрированные в текущей сессии.

Get-NativeArgumentCompleter

CommandName    ScriptBlock
-----------    -----------
somecommand    …
anothercommand …

Пример 2: Получение указанных механизмов завершения аргументов типа Native
Команда получает указанный механизм завершения аргументов типа Native.

Get-NativeArgumentCompleter -Name somecommand

CommandName ScriptBlock
----------- -----------
somecommand …

Пример 3: Получение механизмов завершения аргументов типа Native и отображение их блоков сценария в развернутом виде
Команда получает указанный механизм завершения аргументов типа Native, отображая его блок сценария в развернутом виде.

Get-NativeArgumentCompleter -Name somecommand -ExpandScriptBlocks

CommandName ScriptBlock
----------- -----------
somecommand
            $arguments = 'ArgumentOne', 'ArgumentTwo', 'ArgumentThree'

            foreach ($argument in $arguments)
            {
                if ($argument -like "$wordToComplete*")
                {
                    [System.Management.Automation.CompletionResult]::new($argument)
                }
            }

Get-CustomArgumentCompleterScriptBlock

Пример 1: Получение блока сценария указанного механизма завершения аргументов типа Custom
Команда получает блок сценария указанного механизма завершения аргументов типа Custom.

Get-CustomArgumentCompleterScriptBlock -Name Get-Something:Name

$names = 'NameOne', 'NameTwo', 'NameThree'

foreach ($name in $names)
{
    if ($name -like "$wordToComplete*")
    {
        [System.Management.Automation.CompletionResult]::new($name)
    }
}

Пример 2: Получение блока сценария механизма завершения аргументов типа Custom, переданного через конвейер
Команда получает блок сценария переданного по конвейеру механизма завершения аргументов типа Custom.

Get-CustomArgumentCompleter -Name Do-Something:Action | Get-CustomArgumentCompleterScriptBlock

$actions = 'ActionOne', 'ActionTwo'

foreach ($action in $actions)
{
    if ($action -like "$wordToComplete*")
    {
        [System.Management.Automation.CompletionResult]::new($action)
    }
}

Get-NativeArgumentCompleterScriptBlock

Пример 1: Получение блока сценария указанного механизма завершения аргументов типа Native
Команда получает блок сценария указанного механизма завершения аргументов типа Native.

Get-NativeArgumentCompleterScriptBlock -Name somecommand

$arguments = 'ArgumentOne', 'ArgumentTwo', 'ArgumentThree'

foreach ($argument in $arguments)
{
    if ($argument -like "$wordToComplete*")
    {
        [System.Management.Automation.CompletionResult]::new($argument)
    }
}

Пример 2: Получение блока сценария механизма завершения аргументов типа Native, переданного через конвейер
Команда получает блок сценария переданного по конвейеру механизма завершения аргументов типа Native.

Get-NativeArgumentCompleter -Name anothercommand | Get-NativeArgumentCompleterScriptBlock

$arguments = 'ArgumentOne', 'ArgumentTwo'

foreach ($argument in $arguments)
{
    if ($argument -like "$wordToComplete*")
    {
        [System.Management.Automation.CompletionResult]::new($argument)
    }
}

Remove-CustomArgumentCompleter

Пример 1: Удаление указанного механизма завершения аргументов типа Custom
Команда удаляет указанный механизм завершения аргументов типа Custom.

Remove-CustomArgumentCompleter -Name Get-Something:Name

Пример 2: Удаление механизма завершения аргументов типа Custom, переданного через конвейер
Команда удаляет переданный по конвейеру механизм завершения аргументов типа Custom.

Get-CustomArgumentCompleter -Name Do-Something:Action | Remove-CustomArgumentCompleter

Remove-NativeArgumentCompleter

Пример 1: Удаление указанного механизма завершения аргументов типа Native
Команда удаляет указанный механизм завершения аргументов типа Native.

Remove-NativeArgumentCompleter -Name somecommand

Пример 2: Удаление механизма завершения аргументов типа Native, переданного через конвейер
Команда удаляет переданный по конвейеру механизм завершения аргументов типа Native.

Get-NativeArgumentCompleter -Name anothercommand | Remove-NativeArgumentCompleter

Clear-CustomArgumentCompleters

Пример 1: Удаление всех зарегистрированных механизмов завершения аргументов типа Custom
Команда удаляет все зарегистрированные механизмы завершения аргументов типа Custom.

Clear-CustomArgumentCompleters

Clear-NativeArgumentCompleters

Пример 1: Удаление всех зарегистрированных механизмов завершения аргументов типа Native
Команда удаляет все зарегистрированные механизмы завершения аргументов типа Native.

Clear-NativeArgumentCompleters

Полный список модулей:
https://sergeyvasin.net/modules/


Links:
GitHub: https://github.com/sethvs
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VK: https://vk.com/inpowershell


2 ответ. на "sthArgumentCompleter — модуль PowerShell для работы с механизмами завершения аргументов, зарегистрированными при помощи команды Register-ArgumentCompleter"

  1. Sébastien Maltais 2 апреля, 2019 / 20:10

    Hello,

    I try the module. But i have a bug. When i type any command like Get-NativeArgumentCompleter. I receive no output of anything.

    • Сергей Васин 3 апреля, 2019 / 10:21

      Hello.
      This is because you should first register some argument completers.
      Sticking with native it can be like this:

      $ScriptBlock = {
          Param (
              $wordToComplete,
              $commandAst,
              $cursorPosition
          )
      
          $arguments = 'ACCOUNTS', 'COMPUTER', 'CONFIG', 'CONTINUE', 'FILE', 'GROUP', 'HELP', 
              'HELPMSG', 'LOCALGROUP', 'PAUSE', 'SESSION', 'SHARE', 'START',
              'STATISTICS', 'STOP', 'TIME', 'USE', 'USER', 'VIEW'
      
          foreach ($a in $arguments)
          {
              if ($a -like "$wordToComplete*")
              {
                  [System.Management.Automation.CompletionResult]::new($a)
              }
          }
      }
      
      Register-ArgumentCompleter -CommandName net -ScriptBlock $ScriptBlock
      

      Also if you prefer English, there is a version of this post: https://sergeyvasin.com/2019/04/02/sthargumentcompleter-powershell-module/

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s