2014-09-20 58 views
1

挂钩像cd这样的命令的所有实例,并希望验证并可能修改输入。您可以在PowerShell中从PostCommandLookupAction访问/修改参数吗?

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

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

回答

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 
    } 
} 
相关问题