Версия powershell: Как узнать версию PowerShell в Windows 10, 8.1, 8, 7

Выпущена новая версия PowerShell 7 с улучшениями для Linux в .Net Core и др.

Представлены разработчики Microsoft недавно через сообщение в блоге Microsoft о выпуске новой финальной версии PowerShell 7, который уже доступен для Windows, macOS и Linux. Последний вводит новые функции, связанные с поддержкой .Net Core и новых операторов связи.

PowerShell оптимизирован для автоматизации операций из командной строки и предоставляет встроенные инструменты для обработки структурированных данных в таких форматах, как JSON, CSV и XML, а также поддерживает REST API и объектные модели.

Помимо командной оболочки, для скриптов предлагается объектно-ориентированный язык и набор утилит для управления модулями и скриптами.

Начиная с ветки PowerShell 6, проект разрабатывался на платформе .NET Core. По умолчанию PowerShell передает телеметрию с описанием операционной системы и версии программы (чтобы отключить телеметрию, перед запуском необходимо установить переменную среды POWERSHELL_TELEMETRY_OPTOUT = 1).

Индекс

  • 1 Что нового в PowerShell 7?
  • 2 Как установить PowerShell 7 в Linux?

Что нового в PowerShell 7?

В целом, PowerShell 7 включает следующие изменения: переход с версии .Net Core 2.x на новую версию 3.1 и введение тернарных операторов «a? b: c «, присвоение и слияние нуля»? и ?? знак равно

с обновление с .Net Core 2.x до 3.1 представленная в этой новой версии PowerShell 7 обеспечивает большую совместимость с модулями PowerShell существующие для Windows.

«Если вам не удавалось использовать PowerShell Core 6.x в прошлом из-за проблем с кросс-модульной совместимостью, возможно, вы впервые сможете воспользоваться некоторыми из замечательных функций, которые мы уже предоставили. С самого начала проекта PowerShell Core! «, — подчеркивает Microsoft.

Он добавляет, что:

»Переход от PowerShell Core 6. x к 7.0 также означает переход от .NET Core 2.x к 3.1.

NET Core 3.1 извлекает большое количество API из .NET Framework. (особенно в Windows), что обеспечивает большую совместимость с существующими модулями Windows PowerShell. Сюда входят многие модули Windows, которым требуются функциональные возможности графического интерфейса, такие как Out-GridView и Show-Command, а также множество модулей управления ролями, которые поставляются с Windows.

Полный список поддерживаемых операционных систем предлагается в виде 64-разрядных версий Windows 7, 8.1 и 10, Windows Server 2008 R2, 2012, 2012 R2, 2016 и 2019, macOS 10.13+, Red Hat Enterprise Linux (RHEL) / CentOS 7+, Fedora 29+, Debian 9+, Ubuntu 16.04+, openSUSE 15+ и Alpine Linux 3.8+.

Также поддерживаются варианты Debian и Ubuntu ARM32 и ARM64, а также ARM64 Alpine Linux. Microsoft утверждает, что, хотя это официально не поддерживается, существуют пакеты, созданные сообществом для Arch и Kali Linux. PowerShell 7 доступен для загрузки с GitHub а также имеется документация по установке для Windows, macOS и Linux.

Microsoft уже рассматривает PowerShell 7.1, первая предварительная версия которой будет выпущена в ближайшее время. Пока мы не вернемся к новым функциям, которые делают PowerShell 7 особенным:

  • .NET Core 3.1 (LTS).
  • Конверт совместимости с Windows
  • уведомление о новой версии
  • новое представление ошибок и командлет Get-Error
  • операторы цепочки каналов (&& и |||)
  • тернарный оператор (a? b: c)
  • нулевые операторы присваивания и слияния (??? и ?? =)
  • invoke-DscResource кроссплатформенный (экспериментальный)
  • out-GridView, -ShowWindowWindow и другие командлеты графического интерфейса вернулись в Windows

Наконец, если вы хотите узнать об этом больше, вы можете проверить детали По следующей ссылке.

Как установить PowerShell 7 в Linux?

Для тех, кто заинтересован в возможности установить эту новую версию PowerShell в своей системе, могу подготовить пакеты для разных дистрибутивов Linux из по следующей ссылке.

Хотя в целом они могут установить приложение с помощью пакетов Snap, единственное требование — ваша система должна поддерживать установку этих типов пакетов и иметь установленную службу.

Установить просто откройте терминал и выполните на нем следующую команду:

snap install powershell --classic

Наконец, в случае выбора специально созданных пакетов для каждой раздачи.

Установка может быть выполнена с помощью жестов вашего пакета или из терминала с помощью dpkg (для пакетов deb или с помощью rpm или dnf (для пакетов rpm).

Например, в случае пакетов deb:

sudo dpkg -i powershell-7.0.0-1*.deb

В случае RPM в общих дистрибутивах с:

sudo rpm -i powershell-7.0.0-1*.rpm

Или в случае Fedora или RHEL:

sudo dnf -i powershell-7.0.0-1*.rpm

Как определить версию Windows? / Хабр


Как же определить версию Windows, работающую в корпоративном окружении?

Вопрос кажется простым, правда?

Microsoft позволяет определить номер версии Windows различными способами:

  • Существуют значения в реестре, которым отчаянно не хватает документации.
  • Есть множество командлетов PowerShell, вызовов Windows API и т. п.
  • Также есть варианты для конечного пользователя, например, команда winver, которая вызывает всплывающее окно с версией Windows.
  • И много других способов…


Разобраться во всём этом вам поможет наш пост.

Существует множество инструментов, позволяющих определить, какая версия Windows запущена у ваших клиентов, например, SCCM и PDQ. В этом посте мы рассмотрим встроенные способы определения версии Windows.

▍ Реестр


Для определения запущенной в системе версии Windows можно использовать следующие значения реестра:





КлючЗначениеПример данныхОбъяснение
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionReleaseId2009Целочисленное значение версии (в виде строки). Добавлено в версии 1803, начиная с версии 21h2 не рекомендуется к использованию
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionDisplayVersion20h3Кодовое имя версии в формате строки с цифровыми значениями. Добавлено в версии 1803.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersionCurrentBuild19042Номер сборки версии, используемый программой winver.exe.

Примечание: перечисленные в таблице значения официально не задокументированы Microsoft (см. ниже).

Предупреждение


Microsoft не сообщала об изменениях в этих значениях реестра, не документировала их официальную поддержку и не гарантировала, что в будущем не появится критических изменений. Из-за этого описанными выше ключами реестра пользоваться бывает иногда неудобно, учитывая непостоянство изменений этих ключей, вносимых Microsoft в прошлом. Примеры:

  • ReleaseID не рекомендуется к использованию, начиная с версии 21h2. ReleaseID для 21h2 остаётся равным 2009.
  • Server 2012R2 не имеет ReleaseID и DisplayVersion (они пока не были добавлены в Windows)
  • Server 2016 имеет ReleaseID (1607), но не имеет DisplayVersion
  • Server 2019 имеет ReleaseID (1809), но не имеет DisplayVersion

▍ PowerShell


Ниже приведено несколько примеров того, как можно использовать PowerShell, чтобы определить версию Windows, которая работает в системе:

# При помощи класса System.Environment
[System.Environment]::OSVersion
# При помощи класса CIM Win32_OperatingSystem
Get-CimInstance Win32_OperatingSystem
# При помощи исполняемого файла systeminfo
systeminfo.exe /fo csv | ConvertFrom-Csv
# При помощи командлета Get-ComputerInfo
# ПРИМЕЧАНИЕ: начиная с 21h2 OsHardwareAbstractionLayer не рекомендуется к использованию
Get-ComputerInfo | Select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

▍ Windows API Call


Единственный поддерживаемый (задокументированный) систематический способ определения версии Windows — при помощи вызова Windows API класса AnalyticsInfo. Это можно сделать через PowerShell:

<#
    Класс AnalyticsInfo - задокументированный способ отслеживания версии ОС. Он возвращает
    строковое значение. Формат этой строки не задокументирован, и нельзя полагаться
    на определённое значение. Эти значения можно использовать только чтобы отличать
    одну версию ОС от другой.
    https://docs.microsoft.com/uwp/api
        /windows.system.profile.analyticsversioninfo.devicefamilyversion
    Этот API недоступен на Server Core
#>
$AnalyticsInfo = [Windows.System.Profile.AnalyticsInfo,Windows.System.Profile,ContentType=WindowsRuntime]
$VersionInfo = $AnalyticsInfo.GetMember( 'get_VersionInfo' )
$AnalyticsVersionInfo = $VersionInfo.Invoke( $Null, $Null )
# На моей тестовой машине этот код возвращает `2814751015109593`
$AnalyticsVersionInfo.DeviceFamilyVersion
<#
    Строго говоря, строку *можно* парсить, если вам любопытно, что в ней,
    хотя этого делать *нельзя*
    https://stackoverflow.com/questions/31783604/windows-10-get-devicefamilyversion
#>
$v  = [System. Int64]::Parse( $AnalyticsVersionInfo.DeviceFamilyVersion )
$v1 = ( $v -band 0xFFFF000000000000l ) -shr 48
$v2 = ( $v -band 0x0000FFFF00000000l ) -shr 32
$v3 = ( $v -band 0x00000000FFFF0000l ) -shr 16
$v4 =   $v -band 0x000000000000FFFFl
# На моей тестовой машине этот код возвращает `10.0.19043.985`
[System.Version]::Parse( "$v1.$v2.$v3.$v4" )
<#
    Не опубликовано *никакого* способа декодирования, позволяющего преобразовать
    какое-то из приведённых выше значений в удобную для отображения версию,
    например `21h2`
    Показанная ниже альтернатива доступна только в последних версиях ОС, 
    начиная с Azure Stack HCI, версии 20h3
#>
Get-ComputerInfo -Property 'osDisplayVersion'

▍ Варианты для конечного пользователя


В документации Microsoft перечислено несколько команд, которые конечные пользователи могут применять для определения запущенной версии Windows. Например, чтобы выяснить версию Windows, можно использовать команду winver или меню Параметров Windows. Эти способы предназначаются больше для конечных пользователей, чем для масштабного определения версии системы. Ниже показаны примеры:

▍ Почему это важно


После определения запущенной в системе версии Windows можно использовать эту информацию выполнения детерминированных действий: обновлений Windows, установки патчей и т. п. Например:

Можно запросить значение реестра DisplayVersion (см. раздел «Реестр» выше), чтобы определить запущенную версию Windows. Затем можно задать перечисленные ниже значения реестра, чтобы сообщить Windows, какая версия должна быть запущена в системе. При помощи трёх ключей реестра вы полностью контролируете то, до какой версии Windows ваши системы будут пытаться обновиться!





КлючЗначениеПример данныхОбъяснение
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdateTargetReleaseVersion1Если присвоить единицу, то это включает Feature Upgrades до версии TargetReleaseVersionInfo
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdateTargetReleaseVersionInfo20h3Целевая версия системы
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdateProductVersionWindows 10Новый ключ Windows 11 — имеет значение или «Windows 10», или «Windows 11»


Эти значения реестра можно задавать или напрямую, или через групповую политику.

▍ Куда двигаться дальше


Хотя вам необязательно управлять версиями Windows, запущенными на компьютерах компании, ей было бы ценно знать, какие это версии Windows. По крайней мере, потому, что Microsoft регулярно прекращает поддержку разных версий Windows.

Стоит также заметить, что показанные выше примеры — это неполный список способов определения версии Windows, однако он полезен для людей, управляющих окружением Windows. Эти способы оказались полезными для меня при устранении проблем, задании политик и т. п. Надеюсь, вам они тоже пригодятся.

Кроме того, ситуация с управлением версиями Windows постоянно меняется, поэтому я напишу ещё один пост, когда Microsoft перестанет рекомендовать перечисленные здесь способы.

Дополнительные ссылки

  • Microsoft nixes update deferral settings, but gives us a TargetReleaseVersionInfo
  • Windows 10 Version History
  • Windows Server Versions.

Как проверить версию PowerShell?

Салаудин Рэджек
0 Комментарии
проверить версию powershell, проверить версию powershell, получить версию powershell, получить версию powershell, как проверить версию powershell, как проверить версию powershell, как найти версию powershell, как найти версию powershell, как получить powershell версия, версия powershell get, проверка версии powershell, какая версия powershell у меня есть

Требование: Получить версию PowerShell.

Как проверить версию PowerShell?

PowerShell — это мощный язык сценариев, который позволяет автоматизировать задачи, управлять средой и т. д. Последняя версия PowerShell принесла много новых функций. Следовательно, важно знать, какая у вас версия PowerShell. Знаете ли вы, как получить версию PowerShell, которую вы используете? Что ж, в этом сообщении блога мы покажем вам, как узнать, какую версию PowerShell вы используете в своей системе.

Зачем проверять версию PowerShell?

Прежде чем углубляться в методы проверки версии PowerShell, важно понять, почему эта информация важна. Вот несколько причин, по которым важно знать свою версию PowerShell:

  1. Совместимость: в более новых версиях PowerShell могут быть представлены функции или функции, недоступные или не поддерживаемые в предыдущих версиях. Знание вашей версии PowerShell помогает обеспечить совместимость между вашими сценариями и средой, в которой они выполняются.
  2. Безопасность: обновление PowerShell до последней версии часто включает в себя исправления безопасности и исправления уязвимостей, которые имеют решающее значение для поддержания безопасной среды.
  3. Производительность. Новые версии PowerShell часто содержат улучшения производительности, которые могут помочь повысить общую эффективность ваших сценариев и систем.

Способ 1. Использование переменной $PSVersionTable

Самый быстрый и простой способ проверить версию PowerShell — использовать переменную $PSVersionTable. Эта встроенная переменная содержит информацию о текущей среде выполнения PowerShell, включая номер версии. Запустите PowerShell и введите следующую команду:

$PSVersionTable.PSVersion
 

Эти командлеты позволяют установить версию PowerShell вместе со сведениями о основной и вспомогательной версиях, сборке и редакции. Вы также можете использовать командлет «$PSVersionTable.PSVersion.Major», чтобы определить основную версию установленной оболочки PowerShell.

Способ 2. Использование командлета Get-Host или $Host.Version

Другой способ проверить версию PowerShell — использовать командлет Get-Host. Этот командлет извлекает информацию о текущем хост-приложении, включая номер версии ядра PowerShell.

Откройте «PowerShell» из меню «Пуск» >> Введите:

$Хост.Версия
 

PowerShell отобразит информацию о версии в том же формате, что и в методе $PSVersionTable, включая основной, дополнительный номера, номера сборки и редакции.

Таким образом, знание вашей версии PowerShell жизненно важно для обеспечения совместимости со сценариями и модулями и использования новейших функций. В этом сообщении блога мы обсудили три метода проверки версии PowerShell с помощью переменной $PSVersionTable и методов командлета Get-Host.

Как проверить версию PowerShell [только 1 Cmd] — LazyAdmin

Вы используете версию 5.1 или уже перешли на PowerShell версии 7? Версия PowerShell, которую вы установили, определяет командлеты и функции, которые вы можете использовать. Но как узнать, какая версия у вас установлена? Ну, вы можете проверить свою версию PowerShell с помощью одной команды.

Версия PowerShell, которую вы используете, определяет, какие командлеты и функции вы можете использовать. Скрипты, разработанные для PowerShell версии 5, могут не работать должным образом в PowerShell 7. Поэтому важно знать, какую версию вы используете.

В этой статье мы рассмотрим, как быстро найти версию с помощью одной команды, как вы можете добавить номер версии для использования внутри вашего скрипта и проверить версию на удаленной машине.

Проверить версию PowerShell

Мы можем проверить версию PowerShell, которую вы используете, с помощью системной переменной PowerShell. С помощью одной команды мы можем найти точный номер версии:

Необходимое время: 1 минута.

  1. Откройте PowerShell
  2. Введите $host

    В PowerShell введите $host и нажмите Enter

  3. Найдите строку версии

    90 077 Вы найдете версию, которую вы используете на второй линии Версия . В этом примере 7.1.3

Если вам нужен более удобный макет, вы также можете использовать командлет $host.Version :

 $host.Version 

PowerShell Version

Иногда вам нужно проверить установленную версию в сценарии, чтобы узнать, какие командлеты вы можете использовать. Для этого вы даже можете больше фильтровать вывод с помощью:

 $Host.Version.Major 

Есть также несколько других команд, которые можно использовать для получения номера версии. Но часто используемой альтернативой является переменная хоста $PsVersionTable . Эта переменная рекомендуется везде в Интернете, но я всегда забываю об этом. ( $host легче запомнить 😉 )

 $PSVersionTable.PSVersion
# Выход
Основная незначительная редакция сборки
----- ----- ----- --------
5 1 19041 1237 

Получить версию 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.