在bash中,我可以在 DEBUG
信号上使用陷阱在任何命令之前执行事物,而 PROMPT_COMMAND
变量可在任何交互式命令之后执行内容。
在ZSH中,我可以分别使用preexec
/preexec_functions
和precmd
/precmd_functions
进行相同的事情。
有没有办法在PowerShell中做到这一点?
您可以创建一个使用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