为什么 PowerShell ISE 中的控制台不使用最新安装的 PowerShell 版本?
Why doesn't Console in PowerShell ISE use the latest installed version of PowerShell?
我最近安装了 PowerShell 6.2。
如果我启动 PowerShell 6 (x64) 命令提示符并且 运行 $PSVersionTable.PSVersion
这就是结果
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
6 2 0
从相同的提示我 运行 ISE 使用 powershell_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。我对 this doc 的理解是,这也应该将 ISE 控制台的 PowerShell 版本升级到 5.1。如上所述,我仍然看到 4.0 版。我错过了什么?
PowerShell 的最新版本是 5.1,这也是您可以在 ISE 中使用的最新版本。
PowerShell 6 也称为 PowerShell Core,在 ISE 中不受支持。您可以下载一个名为 Visual Studio Code 的工具,它可以与 PowerShell 6 (Core) 一起使用。
奖金:
有趣的是,实际上我最近读到一篇关于 PowerShell 7 that Microsoft is currently working on which looks pretty interesting. See here 以及 PowerShell 7 的文章。
更新:感谢@Magnetron 在评论中更新。 PowerShell 7 本周正式发布
希望对您有所帮助!
我使用以下 link 向 Powershell ISE 添加了一个附加组件,它允许您在 Powershell 5 和 6 之间切换。(请参阅“PowerShell ISE 附加命令”)但是,当您关闭 Powershell ISE 并打开一个新会话,您必须再次 运行 脚本,否则选项 'Add-ons' 将不存在。我猜当 Powershell 7 发布时可以使用相同的过程。
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/
我会阅读本指南 - https://ironmansoftware.com/using-powershell-core-6-and-7-in-the-windows-powershell-ise/
它允许 ISE 进程将后端 PowerShell 切换为版本 7。它甚至包括创建菜单项和快捷方式来切换后端版本。这非常方便,我已经将它与 ISE 一起使用了一段时间。
对于那些想要启用此功能的较短版本的人。
运行 这是在 ISE 中(取自 link 来自其他答案)
$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 并转到文件、编辑、查看 ant 等旁边的 附加组件 按钮。现在应该有一个切换到 Powershell 7 选项。
就是这样! 1 分钟工作。
我最近安装了 PowerShell 6.2。
如果我启动 PowerShell 6 (x64) 命令提示符并且 运行 $PSVersionTable.PSVersion
这就是结果
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
6 2 0
从相同的提示我 运行 ISE 使用 powershell_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。我对 this doc 的理解是,这也应该将 ISE 控制台的 PowerShell 版本升级到 5.1。如上所述,我仍然看到 4.0 版。我错过了什么?
PowerShell 的最新版本是 5.1,这也是您可以在 ISE 中使用的最新版本。
PowerShell 6 也称为 PowerShell Core,在 ISE 中不受支持。您可以下载一个名为 Visual Studio Code 的工具,它可以与 PowerShell 6 (Core) 一起使用。
奖金: 有趣的是,实际上我最近读到一篇关于 PowerShell 7 that Microsoft is currently working on which looks pretty interesting. See here 以及 PowerShell 7 的文章。
更新:感谢@Magnetron 在评论中更新。 PowerShell 7 本周正式发布
希望对您有所帮助!
我使用以下 link 向 Powershell ISE 添加了一个附加组件,它允许您在 Powershell 5 和 6 之间切换。(请参阅“PowerShell ISE 附加命令”)但是,当您关闭 Powershell ISE 并打开一个新会话,您必须再次 运行 脚本,否则选项 'Add-ons' 将不存在。我猜当 Powershell 7 发布时可以使用相同的过程。
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/
我会阅读本指南 - https://ironmansoftware.com/using-powershell-core-6-and-7-in-the-windows-powershell-ise/
它允许 ISE 进程将后端 PowerShell 切换为版本 7。它甚至包括创建菜单项和快捷方式来切换后端版本。这非常方便,我已经将它与 ISE 一起使用了一段时间。
对于那些想要启用此功能的较短版本的人。
运行 这是在 ISE 中(取自 link 来自其他答案)
$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 并转到文件、编辑、查看 ant 等旁边的 附加组件 按钮。现在应该有一个切换到 Powershell 7 选项。
就是这样! 1 分钟工作。