Как определить, какая версия PowerShell установлена на компьютере, и действительно ли она установлена вообще?
powershell
MagicAndi
источник
источник
$PSVersionTable
более надежен и возвращает $ PSVersion. Вы также можете использовать$PSVersionTable.PSVersion
. Даже если вы подключены удаленно к машине с другой версией (invoke-command -computername myRemotePC -Credential foo {$host}
), похоже$host
, просто покажет самую низкую версию, которую они согласовали для сериализации. Пока$PSVersionTable
покажу верную версию. Надеюсь, это поможет кому-то ..notepad $profile
и бросилfunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
в нем. Перезагрузите,. $profile
и я могу просто напечатать вpsver
любое время, чтобы получить подробную информацию о версии и другие детали.Я бы использовал Get-Host или $ PSVersionTable . Как указывает Энди Шнайдер,
$PSVersionTable
в версии 1 не работает; это было введено в версии 2.источник
$host.version
не является надежным - например, в PowerGUI, он возвращает версию хоста PowerGUI, которая не совпадает с версией двигателяВы можете посмотреть на встроенную переменную
$psversiontable
. Если он не существует, у вас есть V1. Если он существует, он предоставит вам всю необходимую информацию.источник
Чтобы определить, установлен ли PowerShell, вы можете проверить реестр на наличие
а также
и, если он существует, является ли значение 1 (для установленного), как подробно описано в сообщении в блоге Проверьте, установлен ли PowerShell и версия .
Чтобы определить версию PowerShell, которая установлена, вы можете проверить разделы реестра
а также
Чтобы определить версию PowerShell, установленную из сценария .ps1, вы можете использовать следующую однострочную версию , как подробно описано на PowerShell.com, в которой версия PowerShell запущена .
На этом же сайте также есть функция для возврата версии:
источник
Вы можете напрямую проверить версию одной строкой, вызывая PowerShell извне , например из командной строки
Согласно @psaul, вы можете иметь одну команду, которая не зависит от того, откуда она пришла (CMD, PowerShell или Pwsh). Спасибо за это.
Я тестировал, и он работал безупречно как на CMD, так и на PowerShell.
источник
cmd
иpowershell
безрезультатно. Я бы тоже ожидал такого же поведения. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
работает отлично.Вы можете проверить, установлена ли версия Windows PowerShell, выполнив следующую проверку:
В консоли Windows PowerShell введите следующую команду в командной строке и нажмите клавишу ВВОД:
Вы увидите вывод, который выглядит следующим образом:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
источник
Рекомендуемый Microsoft метод прямой совместимости для проверки, установлен ли PowerShell и определения установленной версии, заключается в рассмотрении двух конкретных разделов реестра. Я воспроизвел детали здесь на случай разрыва связи.
Согласно связанной странице:
Чтобы проверить, установлена ли какая-либо версия PowerShell, проверьте следующее значение в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Чтобы проверить, установлена ли версия 1.0 или 2.0 PowerShell, проверьте следующее значение в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
источник
Я нашел самый простой способ проверить, установлен ли он:
cmd
, затем ОК)powershell
затем нажмите клавишу возврата. Затем вы должны получитьPS
приглашение PowerShell :Затем вы можете проверить версию в командной строке PowerShell, набрав
$PSVersionTable.PSVersion
:Введите,
exit
если вы хотите вернуться в командную строку (exit
снова, если вы также хотите закрыть командную строку).Для запуска сценариев см. Http://ss64.com/ps/syntax-run.html .
источник
$host.version
это просто неправильно / ненадежно. Это дает вам версию исполняемого файла хостинга (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe и т. Д.), А не версию самого движка.Версия двигателя содержится в
$psversiontable.psversion
. Для PowerShell 1.0 эта переменная не существует, поэтому, очевидно, что если эта переменная недоступна, вполне можно предположить, что движок равен 1.0.источник
Использование:
Вы можете скачать подробный скрипт из Как определить установленную версию PowerShell .
источник
Самый простой способ забыть эту страницу и никогда не возвращаться к ней - это изучить
Get-Variable
:Нет необходимости запоминать каждую переменную. Просто
Get-Variable
достаточно (и «Там должно быть что-то о версии»).источник
$PSVersionTable
Чтобы проверить, установлен ли PowerShell, используйте:
Чтобы проверить, установлен ли RC2 или RTM, используйте:
Источник: этот сайт .
источник
Так как самый полезный ответ не касался части « если существует» , я подумал, что можно дать один ответ на это через быстрое и грязное решение. Он полагается на то, что PowerShell находится в переменной окружения пути, что, скорее всего, то, что вам нужно. (Шляпа к верхнему ответу, так как я этого не знал.) Вставьте это в текстовый файл и назовите его
или похожие.
источник
Мне нужно было проверить версию PowerShell, а затем запустить соответствующий код. Некоторые из наших серверов работают под управлением v5, а другие v4. Это означает, что некоторые функции, такие как сжатие, могут быть или не быть доступными.
Это мое решение:
источник
Приведенный ниже командлет вернет версию PowerShell.
источник
$PSVersionTable
является автоматической переменной; объект. Это не командлет.Это лучший результат поиска для «Пакетный файл получить версию PowerShell», поэтому я хотел бы привести базовый пример того, как выполнить условный поток в пакетном файле в зависимости от версии PowerShell.
Общий пример
Пример из реального мира
источник
Вы также можете вызвать команду «host» из командной строки PowerShell. Он должен дать вам значение
$host
переменной.источник
host
решает доGet-Host
. Несмотря на это, это не надежный способ получить версию.Расширение ответа с помощью оператора выбора:
источник
Get-Host
).