从Visual Studio / Code运行时,PowerShell不会加载所有PSModulePath

时间:2014-03-27 18:26:53

标签: c# visual-studio powershell

my answer on my question here可以看出,出于某种原因,当我从Visual Studio中的代码运行PowerShell时,通过调用powershell.Invoke或启动新的PowerShell进程,它不包括所有手动启动Windows PowerShell命令提示符时包含的PSModulePaths

如果我在常规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-DateTest-Path等。)

1 个答案:

答案 0 :(得分:0)

我找到了问题的原因,这个问题隐藏在我的问题中。我卸载了StudioShell(Visual Studio PowerShell扩展),现在一切正常。看起来该扩展中存在一个错误。

在我的问题中,你可以看到它是我从Visual Studio运行时列出的最后一个PSModulePath,它有一个相对路径,其余部分都有一个绝对路径。

我将为StudioShell打开一个新错误来修复此错误。