Как написать функцию powershell с блоком сценария, который позволяет автоматизировать c конвейерную переменную $ _ - PullRequest
0 голосов
/ 30 мая 2020

Я хочу написать командлет, который вызывает метод обратного вызова. При вызове метода обратного вызова я хочу иметь возможность использовать автоматическую c переменную $ _. Это значит, что мне не нужно

Например, допустим, моя функция является реализацией, аналогичной ForEach-Object:

( Примечание - я знаю, что мог бы использовать ForEach-Object для того же самого. Я просто представляю это как упрощенный пример для чего-то еще, что мне нужно сделать)

function Invoke-MyCustomPsCmdlet {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true,ValueFromPipeline=$true)]
        [int[]] $input,

        [scriptblock] $callback
    )

    # Do somethign meaningful here.
    Write-Output "Cmdlet: $input"

    foreach($i in $input){
        # How to invoke the $callback so that $i will be passed on to the $_ of the callback scriptblock?
        #$i | $callback
    }

}

Вот как я хочу вызвать его (с помощью $ _)

1,2,3,4,5 | Invoke-MyCustomPsCmdlet -callback { Write-Output "Callback: $_" }

И я ожидаю получить этот результат

Cmdlet: 1 2 3 4 5
Callback: 1
Callback: 2
Callback: 3
Callback: 4
Callback: 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...