Visual Studio Code 的 $psise 相当于什么?

11
我正在寻找一种方法在VSCode中复制$psISE的功能,至少可以发现编辑器中打开、激活文件的文件名。
背景如下:我正在尝试将PowerShell编辑从ISE迁移到VSCode,因为VSCode是未来的方向。我们在迁移某些工作流程(具体来说是签名脚本)时遇到了问题。在ISE中,我创建了一个函数,使用$psise.currentfile.fullpath,以便我们可以轻松地签署在ISE中打开的文件。我想在VSCode中重新创建这个函数,但我找不到任何确定打开文件的方法。我们通常在交互式环境下运行此操作(即我们在ISE中进行测试,然后在另一台计算机上测试时进行签名,只需键入Set-CoSAuthenticodeSignature,它是一个自定义函数,包装了set-authenticodesignature,但设置了默认值并自动查找文件,如果我们没有指定)。因此,我们不想总是输入路径名,特别是现在我们不必要这么做。
谢谢!
2个回答

6
我认为尚未实现($psise)。您可以在VSCode Powershell项目上提交问题,以便进行反馈。已经有一个类似的问题被提交。
至少您可以使用以下内容: $context = [Microsoft.Powershell.EditorServices.Extensions.EditorContext]$psEditor.GetEditorContext() 然后您就可以访问当前文件... $context.CurrentFile. 另请参阅此视频进行介绍...

2
这正是我所需要的!谢谢!要获取文件路径,实际上是 $context.CurrentFile.Path。你的解决方案给了我比我要求的更多信息,太棒了!谢谢! - Danny
1
作为一个单一的命令:$psEditor.GetEditorContext().CurrentFile.Path 返回当前文件的完整路径。 - mklement0
1
VSCode PowerShell的扩展 $psEditor 变量是ISE的 $psISE 变量的“模拟”(在VSCode中,名称 $psISE 不太合适)。 - mklement0

1
$ScriptPath=''
if($ScriptPath -eq '' -and $MyInvocation.MyCommand.CommandType -eq 'ExternalScript'){$ScriptPath = (Split-Path -Path $MyInvocation.MyCommand.Source                  -Parent)} # Running from File
if($ScriptPath -eq '' -and (Test-Path variable:psISE)) {                             $ScriptPath = (Split-Path -Path $psISE.CurrentFile.FullPath                     -Parent)} # Running from ISE
if($ScriptPath -eq '' -and (Test-Path variable:psEditor)) {                          $ScriptPath = (Split-Path -Path $psEditor.GetEditorContext().CurrentFile.Path   -Parent)} # Running from Visual Studio Code

通过提供支持信息来改进您的答案,以便更好地理解。 - pmadhu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接