Почему консоль в PowerShell ISE не использует последнюю установленную версию 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. Насколько я понимаю, из этот документ говорит о том, что он также должен был обновить версию PowerShell для консоли ISE до 5.1. Я все еще вижу версию 4.0, как указано выше. Что мне не хватает?


person Trevor Reid    schedule 17.04.2019    source источник
comment
Найдите ответ здесь stackoverflow.com/questions/52453260/   -  person Tesla Great    schedule 17.04.2019


Ответы (5)


Последняя версия PowerShell - 5.1, это самая последняя версия, которую вы также можете использовать в ISE.

PowerShell 6 также известен как PowerShell Core, который не поддерживается в ISE. Вы можете загрузить инструмент под названием Visual Studio Code, который можно использовать с PowerShell 6 (Core).

Бонус: что интересно, я недавно прочитал статью о PowerShell 7, над которым в настоящее время работает Microsoft, выглядит довольно интересно. См. здесь, а также PowerShell 7 .

Обновление: Спасибо @Magnetron за обновление в комментариях. PowerShell 7 официально выпущен на этой неделе.

Надеюсь это поможет!

person cet51    schedule 17.04.2019
comment
Спасибо @ cet51, это полезно. Скорее всего, я буду работать с VSCode irl, который мне знаком. Однако в лаборатории Microsoft, над которой я работаю, используется ISE. Если бы я установил 5.1, консоль использовала бы это автоматически - для начального обучения я считаю часто полезным не отклоняться от сценария, если это можно сделать. - person Trevor Reid; 17.04.2019
comment
Чтобы ответить на свой комментарий @ cet51 Если я правильно понимаю, обновление до PS 5.1 не было замечено консолью. Обновил вопрос. - person Trevor Reid; 17.04.2019
comment
Это определенно странно. Когда вы обновляете Windows Management Framework, он также обновляет Windows Powershell, я думал, что он также обновил версию ISE. - person cet51; 17.04.2019
comment
Обновление: на этой неделе был выпущен PowerShell 7 - person Magnetron; 06.03.2020

Я использовал следующую ссылку, чтобы добавить надстройку к Powershell ISE, которая позволит вам переключаться между Powershell 5 и 6. (см. «Команда надстройки PowerShell ISE»). Однако, когда вы закрываете Powershell ISE и открываете новую вам нужно запустить скрипт еще раз, иначе опции «Надстройки» там не будет. Я предполагаю, что тот же процесс можно было бы использовать, когда выйдет Powershell 7.

Использование PowerShell Core 6 и 7 в интегрированная среда сценариев Windows PowerShell

person Jeremy F.    schedule 28.01.2020

В VSCode также есть новая функция, которая имитирует ISE: https://devblogs.microsoft.com/powershell/visual-studio-code-for-powershell-7/

Как использовать режим ISE в VScode: https://www.thomasmaurer.ch/2020/03/how-to-use-powershell-ise-mode-in-visual-studio-code/

person js2010    schedule 06.03.2020

Я бы хотел прочитать это руководство - https://ironmansoftware.com/using-powershell-core-6-and-7-in-the-windows-powershell-ise/

Это позволяет процессу ISE переключить серверную оболочку PowerShell на версию 7. Он даже включает создание пункта меню и ярлыка для замены внутренней версии. Это очень удобно, и я уже некоторое время использую его с ISE.

person thatguyfig    schedule 08.09.2020

Для тех, кто хочет более короткую версию включения этого.

Запустите это в 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 и нажмите кнопку Надстройки рядом с «Файл», «Редактировать», «Просмотр муравьев» и т. Д. Теперь должна быть опция «Переключиться на Powershell 7».

Вот и все! 1 мин работа.

person Djongov    schedule 04.03.2021