Powershell 在交互命令之前和/或之后执行操作

Powershell 在交互命令之前和/或之后执行操作,powershell,Powershell,在Bash中,我可以使用DEBUG信号上的trap在任何命令之前执行操作,使用PROMPT\u命令变量在任何交互命令之后执行操作 在Zsh中,我可以分别使用preexec/preexec_函数和precmd/precmd_函数来实现相同的功能 在PowerShell中是否有这样做的方法?您可以创建一个使用Invoke命令或其他方式的函数: 函数调用调试{ [CmdletBinding()] Param( [参数(强制) [Scriptblock[]]$Scriptblock ) 以前{ #在所有

在Bash中,我可以使用
DEBUG
信号上的trap在任何命令之前执行操作,使用
PROMPT\u命令
变量在任何交互命令之后执行操作

在Zsh中,我可以分别使用
preexec
/
preexec_函数
precmd
/
precmd_函数
来实现相同的功能


在PowerShell中是否有这样做的方法?

您可以创建一个使用Invoke命令或其他方式的函数:

函数调用调试{
[CmdletBinding()]
Param(
[参数(强制)
[Scriptblock[]]$Scriptblock
)
以前{
#在所有代码之前
}
过程{
ForEach($Scriptblock中的SB){
#在每个代码之前
调用命令-Scriptblock$SB
#在每个代码之后
}
}
结束{
#毕竟代码
}
}
你也可以用很多其他的方法

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

Invoke Debug-Scriptblock{#您的代码在这里}
或:

$Scriptblock={#您的代码在这里}
调用调试-Scriptblock$Scriptblock

您可以创建一个使用Invoke命令或其他方式的函数:

函数调用调试{
[CmdletBinding()]
Param(
[参数(强制)
[Scriptblock[]]$Scriptblock
)
以前{
#在所有代码之前
}
过程{
ForEach($Scriptblock中的SB){
#在每个代码之前
调用命令-Scriptblock$SB
#在每个代码之后
}
}
结束{
#毕竟代码
}
}
你也可以用很多其他的方法

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

Invoke Debug-Scriptblock{#您的代码在这里}
或:

$Scriptblock={#您的代码在这里}
调用调试-Scriptblock$Scriptblock

在PuthSek中,提示符实际上是由A生成的。它可以在显示PuthBoice提示符时运行你想要的任何东西,我猜它会是你认为的“在任何交互命令之后”。在PowerShell中,提示符实际上是由A生成的,它可以在显示PuthBoice提示符时运行您想要的任何东西,(我猜)是您所认为的“在任何交互命令之后”。。但这需要最终用户实际键入
调用调试…
对吗?我希望它是透明的,对于他在交互式会话中输入的每个命令/@pawamoy它都是透明的。或者,您可以将
Set PSDebug
添加到用户配置文件中。您也可以签出
新事件
。但这需要让最终用户实际键入
Invoke Debug…
对吗?我希望它是透明的,对于他在交互式会话中输入的每个命令/@pawamoy它都是透明的。或者,您可以在用户配置文件中添加
Set PSDebug
。您还可以签出
新事件