Профиль Powershell для добавления параметров к определенной команде

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

Команда:terraform plan

Каждый раз, когда план выполняется, я хочу иметь возможность проверять параметры и видеть,-lock=trueпередается, а если нет, то добавляется-lock=falseк этому. Есть ли подходящий способ зафиксировать запуск этой команды, не создавая совершенно новую функцию, которая строит эту команду? До сих пор единственный способ захвата команд, который я видел, - этоStart-Transcriptно это не совсем то, что мне нужно.

1 ответ

Не отвлекать от другого опубликованного ответа, а предложить альтернативное решение, вот мое мнение:

      $Global:CMDLETCounter = 0
$ExecutionContext.InvokeCommand.PreCommandLookupAction = {
    Param($CommandName, $CommandLookupEvents)
    if ($CommandName -eq 'terraform' -and $Global:CMDLETCounter -eq 0)
    {
        $Global:CMDLETCounter++
        $CommandLookupEvents.CommandScriptBlock = {
            if ($Global:CMDLETCounter -eq 1) 
            { 
                if (-not ($args -match ($newArg = '-lock=')))
                {
                    $args += "${newArg}true"
                }
            }
            & "terraform" @args
            $Global:CMDLETCounter--
        }
    }
}

Вы можете воспользоваться$ExecutionContext автоматическая переменная для доступа к синтаксическому анализатору PowerShell и вставки собственной логики для определенного выражения. В вашем случае вы будете использоватьterraformкоторый ввод команды будет проанализирован для каждого токена и проверен на соответствие-lock=в существующих аргументах. Если не найдено, дополнить-lock=trueк текущим аргументам и снова выполните команду.

Счетчик вы видите($Global:CMDLETCounter) состоит в том, чтобы предотвратить бесконечный цикл, поскольку он просто рекурсивно вызывает сам себя, и нет ничего, что могло бы его остановить.

Другие вопросы по тегам