在交互式命令之前和/或之后执行事情

时间:2019-05-03 14:38:50

标签: powershell

在Bash中,我可以在DEBUG信号上使用陷阱来执行任何命令之前的操作,并使用PROMPT_COMMAND变量来在任何交互式命令之后执行操作。

在Zsh中,我可以分别将preexec / preexec_functionsprecmd / precmd_functions用于相同的事情。

在PowerShell中有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以创建使用Invoke-Command或其他功能的函数:

Function Invoke-Debug {
    [CmdletBinding()]
    Param (
        [Parameter(Mandatory)
        [Scriptblock[]]$Scriptblock
    )

    Before {
        #Before all code
    }

    Process {
        ForEach ($SB in $Scriptblock) {
            #Before each code
            Invoke-Command -Scriptblock $SB
            #After each code
        }
    }

    End {
        #After all code
    }
}

您也可以通过许多其他方式来做到这一点。

这样,您是否可以像这样运行命令?

Invoke-Debug -Scriptblock {#Your code here}

或者:

$Scriptblock = {#Your code here}
Invoke-Debug -Scriptblock $Scriptblock