2017-12-15 6 views
-3

PowerShell 스크립트가 여러 파일에있는 경우 특정 파일의 구현을 검색 할 파일을 이해하기 어렵습니다. 편집을위한 특정 기능의 구현으로 빨리 이동할 수 있습니까? PowerShell ISE에서 함수에 커서를 놓고 바로 가기로 함수를 구현하면 가장 좋은 솔루션이됩니다.PowerShel의 구현 방법 ISE

이 명령 반환 파일 경로 :

${Function:Verb-MyCommand}.File

가 그럼 난이 파일에있는 함수의 이름에 대한 검색을 할 수 있습니다.

하지만 매우 느리다는

답변

0

당신은 PowerShell을 ISE에서이 코드를 실행해야합니다. 추가 기능은 바로 가기 "CTRL + Alt + Shift + B"와 함께 추가됩니다. 스크립트 편집기의 함수에 커서를 놓고 "Ctrl + Alt + Shift + B"를 누르거나 메뉴의 애드온 목록에서 선택하면 필요한 파일이 PowerShell ISE에서 열리고 커서가 이 기능의 시작. 이 코드는 [설명 포함] 문제를 해결할 수 있지만

function Get-TokenInfo 
{ 
    [Alias("ti")] 
    [OutputType([System.Management.Automation.PSToken[]])] 
    Param() 
    Process 
    { 
    $editor = $psise.CurrentFile.Editor; 
    $line = $editor.CaretLine; 
    $column = $editor.CaretColumn; 
    return [system.management.automation.psparser]::Tokenize($psISE.CurrentFile.Editor.Text, [ref]$null) |?{$_.StartLine -le $line -and $_.EndLine -ge $line -and $_.StartColumn -le $column -and $_.EndColumn -ge $column}; 
} 
} 
function GoTo-CommandImplementation 
{ 
    [Alias("gti")] 
    Param() 

    Process 
    { 
    $commandInfo = ti |?{$_.Type -eq [System.Management.Automation.PSTokenType]::Command} | select -First 1; 
    if(!$commandInfo) 
    { 
     Write-Host "Is not a command"; 
    } 
    else 
    { 
     $commandName = $commandInfo.Content; 
     $command = Get-Command $commandName; 
     if($command -is [System.Management.Automation.AliasInfo]) 
     { 
      $command = $command.ResolvedCommand; 
     } 
     if($command.CommandType -eq [System.Management.Automation.CommandTypes]::Function) 
     { 
      $functionInfo = [System.Management.Automation.FunctionInfo]$command; 
      $commandFile = $functionInfo.ScriptBlock.File; 
      $line = $functionInfo.ScriptBlock.StartPosition.StartLine; 
      $column = $functionInfo.ScriptBlock.StartPosition.StartColumn; 
      psedit $commandFile; 
      $psise.CurrentFile.Editor.Focus(); 
      $psise.CurrentFile.Editor.SetCaretPosition($line, $column); 
     } 
     else 
     { 
      Write-Host "Is not Function."; 
     } 
    } 
    } 
} 
$PowerPSISERoot.Submenus.Add("GoTo Implementation", {gti}, "CTRL+Alt+SHIFT+B"); 
+1

(http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers는) 정말를 개선하는 데 도움 귀하의 게시물의 품질. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. – Clijsters