5

我最近安装了 PowerShell 6.2。

如果我启动 PowerShell 6 (x64) 命令提示符并运行$PSVersionTable.PSVersion这就是结果

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
6      2      0

在同一提示下,我使用运行 ISEpowershell_ise.exe并启动 PowerShell ISE。但是,在 ISE 的控制台中,如果我运行$PSVersionTable.PSVersion它会报告:

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1  

是否有控制 ISE 在何处查找 PowerShell 的设置?或者有什么方法可以确保它使用安装的最新版本?


更新:作为安装 PowerShell Core(即 6.2 版)的一部分,我必须安装 Windows Management Framework 5.1。我从这个文档的理解是,这也应该将 ISE 控制台的 PowerShell 版本升级到 5.1。如上所述,我仍然看到 4.0 版。我错过了什么?

4

5 回答 5

7

PowerShell 的最新版本是 5.1,这也是您可以在 ISE 中使用的最新版本。

PowerShell 6 也称为 PowerShell Core,它在 ISE 中不受支持。您可以下载一个名为Visual Studio Code的工具,该工具可与 PowerShell 6 (Core) 一起使用。

奖励:有趣的是,实际上我最近读到了一篇关于微软目前正在开发的PowerShell 7的文章,看起来很有趣。有关 PowerShell 7,请参见此处

更新:感谢@Magnetron 更新评论。PowerShell 7 本周正式发布。

希望这可以帮助!

于 2019-04-17T16:47:07.173 回答
2

VSCode 中还有一个模拟 ISE 的新功能: https ://devblogs.microsoft.com/powershell/visual-studio-code-for-powershell-7/

如何在 VScode 中使用 ISE 模式: https ://www.thomasmaurer.ch/2020/03/how-to-use-powershell-ise-mode-in-visual-studio-code/

于 2020-03-06T13:45:37.593 回答
2

我会阅读本指南 - https://ironmansoftware.com/using-powershell-core-6-and-7-in-the-windows-powershell-ise/

它允许 ISE 进程将后端 PowerShell 切换到版本 7。它甚至包括创建菜单项和交换后端版本的快捷方式。这非常方便,我已经将它与 ISE 一起使用了一段时间。

于 2020-09-08T08:23:35.303 回答
2

我使用以下链接向 Powershell ISE 添加了一个附加组件,它允许您在 Powershell 5 和 6 之间切换。(请参阅“PowerShell ISE 附加命令”)但是,当您关闭 Powershell ISE 并打开一个新的会话您必须再次运行脚本,否则选项“附加组件”将不存在。我猜当 Powershell 7 发布时可以使用相同的过程。

在 Windows PowerShell ISE 中使用 PowerShell Core 6 和 7

于 2020-01-28T17:35:46.080 回答
0

对于那些想要启用此功能的较短版本的人。

在 ISE 中运行此程序(取自其他答案的链接)

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Clear()
$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Switch to PowerShell 7", { 
        function New-OutOfProcRunspace {
            param($ProcessId)

            $ci = New-Object -TypeName System.Management.Automation.Runspaces.NamedPipeConnectionInfo -ArgumentList @($ProcessId)
            $tt = [System.Management.Automation.Runspaces.TypeTable]::LoadDefaultTypeFiles()

            $Runspace = [System.Management.Automation.Runspaces.RunspaceFactory]::CreateRunspace($ci, $Host, $tt)

            $Runspace.Open()
            $Runspace
        }

        $PowerShell = Start-Process PWSH -ArgumentList @("-NoExit") -PassThru -WindowStyle Hidden
        $Runspace = New-OutOfProcRunspace -ProcessId $PowerShell.Id
        $Host.PushRunspace($Runspace)
}, "ALT+F5") | Out-Null

$psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add("Switch to Windows PowerShell", { 
    $Host.PopRunspace()

    $Child = Get-CimInstance -ClassName win32_process | where {$_.ParentProcessId -eq $Pid}
    $Child | ForEach-Object { Stop-Process -Id $_.ProcessId }

}, "ALT+F6") | Out-Null

然后重新启动您的 ISE 并转到File、Edit、View ant 等旁边的Add-ons按钮。现在应该有一个 Switch to Powershell 7 选项。

而已!1分钟的工作。

于 2021-03-04T09:48:02.720 回答