Как проверить свою версию PowerShell [только одна команда]
Версия PowerShell определяет, какие функции вы можете использовать. Поэтому, прежде чем вы сможете запустить конкретный скрипт или командлет, вам, возможно, нужно будет проверить вашу версию PowerShell.
Вы можете проверить, какая версия PowerShell у вас установлена, с помощью одной команды. Если вы используете PowerShell 7, она даже отображается автоматически при его открытии.
В этой статье я объясню, как вы можете быстро проверить версию PowerShell и как использовать этот метод в своих скриптах или на удаленной машине.
Проверьте версию PowerShell
Чтобы проверить, какую версию PowerShell вы используете, вы можете воспользоваться одной командой в PowerShell, чтобы узнать точный номер версии:
$PSVersionTable
Значение PSVersion — это версия PowerShell, которую вы используете. В приведенном выше примере мы используем PowerShell 7. Как упоминалось в начале, когда вы открываете PowerShell 7, вы также увидите номер версии, напечатанный на первой строке:
Получить версию PowerShell в скрипте
Когда вы создаете скрипт PowerShell, который использует конкретные cmdlets, которые работают только в PowerShell 7 или 5.1, вам нужно будет добавить проверку версии.
Вместо того чтобы получать всю информацию о версии, мы можем получить только основной номер версии (например, 5 или 7), напрямую выбрав основной номер версии:
$PSVersionTable.PSVersion.Major
Returns
7Использование переменной $host
Еще одной часто упоминаемой опцией является использование переменной $host для проверки версии PowerShell. Переменная $host возвращает информацию о хосте, который выполняет PowerShell. Это отлично работает в вашей локальной консоли PowerShell:
$host
Or directly the version number
$host.versionНо использование переменной $host или команды Get-Host приведет к проблемам при использовании на удаленной машине или, например, в Visual Studio Code. Проблема в том, что она возвращает информацию о хосте, а не о движке PowerShell.
Возьмем пример ниже: если мы посмотрим на переменную $PSVersionTable в Visual Studio Code, то она возвращает версию PowerShell 7.4.1. Но переменная $host возвращает версию Visual Studio Code вместо PowerShell.
Использование реестра
Последний способ, который вы можете использовать для проверки версии PowerShell, это использование реестра. Возможно, это не самый удобный метод, но этот вариант может быть полезен, когда вам нужно провести инвентаризацию нескольких компьютеров.
Существует только одна проблема с методом реестра: номер версии PowerShell 7 хранится в другом месте по сравнению со старой версией.
Таким образом, чтобы проверить номера версий, мы можем использовать следующие два пути реестра:
Get the older PowerShell versions
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion'
Get the PowerShell 7 Version
Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\31ab5147-9a97-4452-8443-d9709f0516e1 -Name 'SemanticVersion'Получить версию PowerShell с удаленного хоста
Прежде чем вы сможете запустить скрипт на удаленном компьютере, иногда вам нужно сначала проверить, какая версия установлена. На некоторых серверах может быть установлена только версия 2 или 3, что может ограничить набор командлетов, которые вы можете использовать в своем скрипте.
Чтобы получить версию с удаленного хоста, мы собираемся использовать командлет invoke-command. Это позволяет нам выполнять блок скрипта на удаленном компьютере и возвращать результаты для использования:
Invoke-Command -Computername lazy-lab11 -Scriptblock {$PSVersionTable.PSVersion}Обновление вашего PowerShell
PowerShell — это встроенный инструмент в Windows, что означает, что он обновляется вместе с обновлениями Windows. В Windows 10 и Windows 11 по умолчанию устанавливается PowerShell 5.1. Для обновления до PowerShell 7 вам необходимо будет установить его вручную.
Узнайте больше об установке PowerShell 7 и обновлении его в этой статье.
Завершение
Хотя переменная $host легче запоминается, рекомендуется использовать $PSVersionTable вместо этого. Это более надежно, чем переменная host, особенно в скриптах или когда вам нужно работать с удаленными компьютерами.
Надеюсь, вы нашли эту статью полезной. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.


