2014-09-20 66 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 
    } 
} 
相關問題