您可以从powershell中的PostCommandLookupAction访问/修改参数吗?

时间:2014-09-20 05:41:57

标签: powershell powershell-v3.0 executioncontext

挂钩cd之类的命令的所有实例,并希望验证并可能修改输入。

$executionContext.SessionState.InvokeCommand.PostCommandLookupAction = {
    param($CommandName, $CommandLookupEventArgs)
    #Only hook cd
    if($CommandLookupEventArgs.CommandOrigin -eq "Runspace" -and $CommandName -eq "cd"){
       //Do modification here
    }
}

是否有一个变量可以提供修改传递给cd的参数的访问权限?

1 个答案:

答案 0 :(得分:3)

如果您指定CommandScriptBlock,则该脚本块中的args将可用,例如:

$ExecutionContext.InvokeCommand.PostCommandLookupAction = {
    param($s,$ea) 
    if ($ea.commandname -eq 'cd') { 
        write-host "Intercpeting CD command"
        $ea.CommandScriptBlock = {Set-Location @args}
        $ea.StopSearch = $true
    } 
}