如何检测用户在PowerShell中停留在一个位置的时间

kel*_*oti 4 filesystems powershell

我正在尝试记录用户在目录中停留的时间.有人打电话时有没有办法拦截事件Set-Location

kel*_*oti 6

我还发布了powershell technet forumn并得到了一个很好的答案.简而言之,您可以在powershell中的任何对象上设置断点.使用断点,您可以关联一个代码块(或省略该块以暂停执行).更酷的部分是powershell提供了一个pwd代表当前工作目录的全局对象.您可以在此全局对象上的所有"写入"操作上设置断点.

它基本上是观察者模式或AOP.最好的部分是,这将对于任何改变当前目录工作- ,,cd 等这里是我的C#代码cmdlet的:pushdpopd

InvokeCommand.InvokeScript(@"Set-PSBreakpoint -Variable pwd -Mode Write -Action {
    [Jump.Location.JumpLocationCommand]::UpdateTime($($(Get-Item -Path $(Get-Location))).PSPath);
}");
Run Code Online (Sandbox Code Playgroud)

我正在调用一种静态方法来跟踪时间.我猜我只是喜欢C#:(