如何在powershell v2中修改发送到内置命令的参数?

时间:2014-09-21 17:09:15

标签: powershell powershell-v2.0 invoke-command

在powershell v3中,您可以使用$executionContext.SessionState.InvokeCommand.PostCommandLookupActionCommandScriptBlock来修改参数。你如何在v2中完成同样的事情?

Powershell 3示例:

$executionContext.SessionState.InvokeCommand.PostCommandLookupAction = {
    param($CommandName, $CommandLookupEventArgs)
    if($CommandLookupEventArgs.CommandOrigin -eq "Runspace" -and $CommandName -eq "cd"){
        $CommandLookupEventArgs.CommandScriptBlock = {
            if($args){
            $x = ModifyPathOrDoSomethingHere($x)
            $x = Resolve-Path($args)
            Set-Location $x
            }
        }
        $CommandLookupEventArgs.StopSearch = $true
    }
}

1 个答案:

答案 0 :(得分:1)

在V2(及更高版本)中,您可以使用称为代理命令的技术拦截命令。看看这个PowerShell team blog post on the subject