让 VS Code 更像 PowerShell ISE

让 VS Code 更像 PowerShell ISE

我最近花了很多时间在 PowerShell 上工作,我发现我真的很喜欢它的形式和功能Visual Studio 代码PowerShell 扩展通过本机 PowerShell ISE 进行此工作,除了一个小部分:

在 ISE 中我可以在 ISE 的命令行中调用和探索我当前正在处理的代码中的变量、数组、哈希和其他实体,但在 VS Code 中,无论是使用 PowerShell 集成控制台还是 powershell.exe 控制台,我都无法获得这种能力。

例如:

在 ISE 中,我构建了一个哈希表,并通过在控制台中尝试各种方法学习引用它的语法,通过“运行”代码,即使只是声明和构建哈希表,我也可以引用它并在控制台中探索它:

带有一些代码和输出的 PowerShell ISE

当我尝试在 VS Code 中执行此操作(相同的代码,在任一控制台中运行脚本)时,我收到此错误,基本上指出我尝试探索的数组不存在:

VS Code 中的 powershell 控制台输出

如何在 VS Code 中获得类似的功能?或者这有可能吗?

也许我遇到的大部分问题在于我无法以谷歌“理解”的方式来描述这个问题,因此我无法在网上找到任何类似的问题。

答案1

问题是您没有点源脚本,您只是传递脚本路径(根据您对原始帖子的评论)

你在做什么: .\script.ps1(仅说明一条路径,没有调用脚本来运行它)

你应该做的: . .\script.ps1(点源将脚本内容加载到会话中)。

这是我复制您的问题:

在此处输入图片描述

它的工作原理如下:

在此处输入图片描述

  1. 第一行是我从会话中清除变量
  2. 第二行确认变量正在复制您的问题(这是预期的,因为该变量当时不存在)
  3. 第三行是点源脚本,其中包含以下块(与您的屏幕截图相同)以复制您的处理方式
  4. 运行完全相同的哈希表查找,将得到与 ISE 相同的输出

脚本块位于testHash.ps1

$hash_agencyOffices = @{
    Agency1 = @{
        Agency1 = @(
            "Aberdeen"
            "Sacramento"
            "Dallas"
            "Long Beach"
            "Tampa"
            "Seattle"
            "Vancouver"
        )
    }
    Agency2 = @{
        SubAgency1 = @(
            "Aberdeen"
            "Sacramento"
            "Dallas"
            "Long Beach"
            "Tampa"
            "South Bend"
            "Stevenson"
            "Tumwater"
            "Vancouver"
        )
        SubAgency2 = @(
            "Dallas"
            "Seattle"
            "Vancouver"
        )
    }
}

答案2

VS Code 是开源的。您想要执行的操作似乎不受支持现在,所以如果您想要这样的功能,我们总是欢迎补丁。:)

相关内容