我最近花了很多时间在 PowerShell 上工作,我发现我真的很喜欢它的形式和功能Visual Studio 代码与PowerShell 扩展通过本机 PowerShell ISE 进行此工作,除了一个小部分:
在 ISE 中我可以在 ISE 的命令行中调用和探索我当前正在处理的代码中的变量、数组、哈希和其他实体,但在 VS Code 中,无论是使用 PowerShell 集成控制台还是 powershell.exe 控制台,我都无法获得这种能力。
例如:
在 ISE 中,我构建了一个哈希表,并通过在控制台中尝试各种方法学习引用它的语法,通过“运行”代码,即使只是声明和构建哈希表,我也可以引用它并在控制台中探索它:
当我尝试在 VS Code 中执行此操作(相同的代码,在任一控制台中运行脚本)时,我收到此错误,基本上指出我尝试探索的数组不存在:
如何在 VS Code 中获得类似的功能?或者这有可能吗?
也许我遇到的大部分问题在于我无法以谷歌“理解”的方式来描述这个问题,因此我无法在网上找到任何类似的问题。
答案1
问题是您没有点源脚本,您只是传递脚本路径(根据您对原始帖子的评论)
你在做什么: .\script.ps1
(仅说明一条路径,没有调用脚本来运行它)
你应该做的: . .\script.ps1
(点源将脚本内容加载到会话中)。
这是我复制您的问题:
它的工作原理如下:
- 第一行是我从会话中清除变量
- 第二行确认变量正在复制您的问题(这是预期的,因为该变量当时不存在)
- 第三行是点源脚本,其中包含以下块(与您的屏幕截图相同)以复制您的处理方式
- 运行完全相同的哈希表查找,将得到与 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 是开源的。您想要执行的操作似乎不受支持现在,所以如果您想要这样的功能,我们总是欢迎补丁。:)