当从Visual Studio / Code运行时,PowerShell不加载所有PSModulePaths
本文关键字:加载 PSModulePaths PowerShell Studio Visual Code 运行时 当从 | 更新日期: 2023-09-27 17:54:40
从我对问题的回答中可以看出,由于某种原因,当我在Visual Studio中从代码中运行PowerShell时,要么调用PowerShell。调用,或通过启动一个新的PowerShell进程,它不包括所有的PSModulePaths,包括当我手动启动Windows PowerShell命令提示符。
如果我在常规的Windows PowerShell命令提示符中执行(Get-Item Env:'PSModulePath).Value -Split ';'
,我会得到以下7个路径:
C:'Users'Dan Schroeder'Documents'WindowsPowerShell'Modules'
C:'Program Files (x86)'PowerShell Community Extensions'Pscx3'
C:'Program Files'WindowsPowerShell'Modules
C:'WINDOWS'system32'WindowsPowerShell'v1.0'Modules'
C:'Program Files (x86)'Microsoft SQL Server'110'Tools'PowerShell'Modules'
C:'Program Files'Microsoft Security Client'MpProvider'
C:'Program Files (x86)''Code Owls LLC
然而,如果我从代码中运行它,我得到以下3个路径:
C:'Users'Dan Schroeder'Documents'WindowsPowerShell'Modules'
C:'Users'Dan Schroeder'Documents'WindowsPowershell'Modules
C:'Program Files (x86)'Code Owls LLC'StudioShell'bin''..''..
为什么它们如此不同?因为当我从代码中运行时,它不包括C:'WINDOWS'system32'WindowsPowerShell'v1.0'Modules'
,所以默认的内置cmdlet不可用(例如Get-Date
, Test-Path
等)。
我找到了问题的原因,它隐藏在我的问题中。我卸载了StudioShell(一个Visual Studio PowerShell扩展),现在一切正常工作。这个扩展好像有个bug。
在我的问题中,你可以看到它是我从Visual Studio运行时列出的最后一个PSModulePath,并且它有一个相对路径,其中其余的有一个绝对路径。
我将为StudioShell打开一个新bug来解决这个问题。