Для определения версии Powershell есть с десяток вариантов. Обычно это нужно для проверки работы скриптов и команд. На примерах мы рассмотрим: как проверять версию PS, как работать с версией ниже и как узнать версию команд.
В зависимости от версии у вас сработает одна из команд:
host
# или
$PSVersionTable
Ниже можно посмотреть версии Powershell, с которыми уже идет операционная система и до какой версии мы можем обновить Powershell. В случае с Windows 7 версия Powershell 3.0:
Если вы хотите обновить оболочку PS, то вбейте в поиске, например, "windows management framework 5.1" и установите файл скаченный с сайта Microsoft.
Другая ситуация, когда мы не можем обновить Powershell. В таком случае у нас есть вариант запустить версию Powershell 2. Дело в том, что версии PS 3 и 4 обратно совместимы со скриптами версии 2. Для изменения версии вбейте в консоли:
powershell.exe -Version 2
Указанная версия будет работать до тех пор, пока сеанс открыт.
С версии PS 5.0 появилась возможность получения информации по версии командлета:
Get-Command Get-ChildItem
Не могу с уверенностью сказать, что эта цифра хоть как-то указывает на редакцию Powershell в которой этот командлет впервые появился. Возможно говориться о количестве выпусков с момента первого релиза, но например командлет Test-NetConnection появился в Powershell 4, но в PS 5.1 его версия 1.0:
Противоположная ситуация со сторонними модулям, для примера модуль SQLServer имеет версию 21.
Если вы пишете исполняемый скрипт, то можете использовать следующий функционал, который определит какая версия Powershell установлена и в зависимости от этого выполнит разную работу с объектами:
$ps_version = (get-host).Version.Major
if ( $ps_version -eq "2" )
{
# проверка на PowerShell v2
write "Вы используете версию Powershell $ps_version... Скрипт сработает через ping!"
write ""
# Или какой-то командлет
ping ya.ru
}
elseif ( $ps_version -eq "5" )
{
# проверка на PowerShell v5
write "Версия $ps_version подходит. Начало работы"
write ""
# команда для примера
Test-NetConnection localhost
}
else
{
write-host "Неизвестная ошибка"
exit
}
...
Подписывайтесь на наш Telegram канал
Теги: #powershell