如何在Powershell ISE中进行实施



当powershell脚本在几个文件中时,很难在哪个文件中搜索特定函数的实现。我如何快速地执行特定函数以进行编辑?如果在powershell iSe中将光标放在函数上,并通过快捷方式转到函数的实现 - 这将是最好的解决方案。

此命令返回文件路径:

${Function:Verb-MyCommand}.File

然后我可以在此文件中搜索函数的名称。

但是非常慢

您需要在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");

相关内容

  • 没有找到相关文章

最新更新