Windows 2008 r2 powershell version

В состав стандартных средств операционной системы Windows Server 2008 R2 входит powershell версии 2.0. Вторая версия — очень древняя и не содержит большого количества полезных функций. Для обновления версии до 5.1 нужно установить .NET Framework версии 4.x (желательно последний) и Windows Management Framework (WMF) версии 5.1 (KB3191566).

Смотрим текущую версию powershell:

$PSVersionTable

Строчка PSVersion.

Скачиваем и устанавливаем .NET Framework. Оф.сайт, зеркало.

Скачиваем и устанавливаем WMF (KB3191566). Оф. сайт, зеркало.

Перезагружаем сервер.

Проверяем версию:

$PSVersionTable

Должна быть 5.1


Posted by
on August 11, 2017

Windows Management Framework (WMF) 5.1 contains PowerShell 5.1. By default Windows Server 2008 R2 SP1 runs the older PowerShell version 2. By downloading and installing WMF 5.1 to a Windows Server 2008 R2 system, we can upgrade it to PowerShell version 5.1.


This post is part of our Microsoft 70-744 Securing Windows Server 2016 exam study guide series. For more related posts and information check out our full 70-744 study guide.


Download WMF 5.1 to a Windows Server 2008 R2 system

This also works with Windows Server 2012 and 2012 R2. By default Windows Server 2016 already has PowerShell 5.0 installed, so this is not required there. Note that to upgrade Windows Server 2008 R2 you must be using Service Pack 1 (SP1).

First we’ll confirm the verison of PowerShell on our 2008 R2 system. This can be done by opening PowerShell, and running $PSVersionTable, as shown below.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

As expected we have PowerShell version 2.0, which is the default in this operating system.

WMF 5.0 or higher is needed to provide the just-enough administration (JEA) PowerShell feature implemented in Windows Server 2016 into the older 2008 R2 SP1 operating system.

Before we download and install WMF though, we must first install .NET Framework 4.5.2 or later, as this is a prerequisite for WMF 5.1 in Windows Server 2008 R2 SP1, and by default 2008 R2 SP1 comes with .NET 3.5. You can download a newer version of .NET from here: https://www.microsoft.com/net/download/framework

After installation has completed you’ll need to perform a system reboot to proceed.

Next download Windows Management Framework (WMF) 5.1 from Microsoft: https://www.microsoft.com/en-us/download/details.aspx?id=54616

A system reboot is not required after installing WMF.

Once installed open PowerShell and run $PSVersionTable again, we can now see that PSVersion is listed as 5.1 as expected.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14409.1005
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1005
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

We will now be able to configure our Windows Server 2008 R2 SP1 system to use just-enough administration (JEA), as we’ll cover in future posts.

Summary

By first updating the .NET Framework and then installing either WMF 5.0 or 5.1, we can upgrade our PowerShell version to support Just-Enough Administration (JEA) in older versions of Windows, such as Windows Server 2008 R2, 2012, and 2012 R2.


This post is part of our Microsoft 70-744 Securing Windows Server 2016 exam study guide series. For more related posts and information check out our full 70-744 study guide.

В этой статье мы рассмотрим какие версии PowerShell существуют, в чем отличие Windows PowerShell от PowerShell Core и как узнать, какая версия PowerShell установлена на локальном или удаленных компьютерах.

Содержание:

  • История версии PowerShell, PowerShell Core
  • Как узнать версию PowerShell из консоли?
  • Получаем версию PowerShell на удаленных компьютерах

История версии PowerShell, PowerShell Core

По умолчанию PowerShell устанвлен во всех версиях Windows, начиная с Windows 7 SP1 и Windows Server 2008 R2 SP1. В следующей таблице представлен список актуальных версий PowerShell:

Версия PS Примечание
PowerShell 1.0 Можно было установить вручную в Windows Server 2003 SP1 и Windows XP
PowerShell 2.0 Предустановлен в Windows Server 2008 R2 и Windows 7
PowerShell 3.0 Установлен в Windows 8 и Windows Server 2012
PowerShell 4.0 Предустановлен в Windows 8.1 и Windows Server 2012 R2
PowerShell 5.0 Предустановлен в Windows 10 RTM, и автоматически обновляется до 5.1 через Windows Update
PowerShell 5.1 Встроен в Windows 10 (начиная с билда 1709) и Windows Server 2016
PowerShell Core 6.0 и 6.1 Следующая кроссплатформенная версия PowerShell (основана на .NET Core), которую можно установить не только во всех поддерживаемых версиях Windows, но и в MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE
PowerShell Core 7.0 Самая последняя версия PowerShell, вышедшая в марте 2020 (в новом релизе выполнен переход с .NET Core 2.x на 3.1)

Вы можете вручную установить более новую версию PowerShell в предыдущих версиях Windows. Для этого нужно скачать и установить соответствующую версию Windows Management Framework (PowerShell входит в его состав).

Стоит обратить внимание, что последние 2 года Microsoft приостановила развитие классического Windows PowerShell (выпускаются только исправления ошибок и безопасности) и сфокусировалась на открытом кроссплатформенном PowerShell Core. В чем отличия Windows PowerShell от PowerShell Core?

  • Windows PowerShell основан на NET Framework (например, для PowerShell 5 требуется .NET Framework v4.5, нужно убедиться что он установлен). PowerShell Core основан на .Net Core;
  • Windows PowerShell работает только на ОС семейства Windows, а PowerShell Core является кроссплатформенным и будет работать в Linux;
  • В PowerShell Core нет полной совместимости с Windows PowerShell, однако Microsoft работает на улучшением обратной совместимости со старыми командлетами и скриптами (перед переходом на PowerShell Core рекомендуется протестировать работу старых PS скриптов). В PowerShell 7 обеспечивается максимальная совместимсть с Windows PowerShell.
  • Редактор PowerShell ISE нельзя использовать для отладки скриптов PowerShell Core (но можно использовать Visual Studio Code)
  • Т.к. Windows PowerShell более не развивается, рекомендуется постепенно мигрировать на PowerShell Core.

Как узнать версию PowerShell из консоли?

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

host

Следующий скриншот из Windows 10, в которой как и в Windows Server 2016 по умолчанию установлен PowerShell 5.1.

как определить установленную версию powershell из консоли

или

$PSVersionTable

Можно получить только значении версии:

$PSVersionTable.PSVersion.major

(в этом примере мы получили версию PSVersion 2.0 с чистого Windows Server 2008 R2)

Команда
$PSVersionTable
корректно работает в PowerShell Core на различных операционных системах.

Также можно узнать установленную версию PowerShell через реестр. Для этого нужно получить значение параметра PowerShellVersion из ветки реестра HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine с помощью Get-ItemProperty

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

узнать версию powershell xthtp httcnhf

Данный способ работает, начиная с Windows Server 2012/Windows 8. В Windows Server 2008 R2/ Windows 7 нужно получить значение параметра реестра в другой ветке:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

версия powershell в windows server 2008r2

Для определения установленной версии PowerShell Core нужно использовать команду:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion

Получаем версию PowerShell на удаленных компьютерах

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

Вы можете получить версию PowerShell с удаленного компьютера с помощью команды Invoke-Command:

Invoke-Command -ComputerName dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

получить версию powershell с удаленного компьютера

Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
5 1 14393 3383 dc01

Можно получить установленные версии PowerShell с нескольких компьютеров таким скриптом (их список сохранен в текстовом файле):

Invoke-Command -ComputerName (Get-Content C:\PS\servers.txt) -
ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}

Либо можно получить список компьютеров домена через Get-ADComputer и получить версию PowerShell на них:

$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase ‘OU=servers,dc=winitpro,dc=ru’ ).Name
Invoke-Command-ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

Если ваш скрипт PoweShell использует специальный функционал определенной версии PS, вы можно принудительно переключиться в режим другой версии PowerShell. Например, для запуска консоли в режиме PowerShell v3, выполните (должен быть установлен .Net Framework 3.5):

PowerShell.exe -version 3

Определение версии PowerShell может быть важно при выполнении скриптов и запуске команд, которые используют командлеты или специальные возможности определенной версии PS. Если вы хотите в скрипте PS определить какая версия PowerShell установлена, и в зависимости от этого использовать разные командлеты, вы можете использовать такой скрипт:

$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2” )
{
write "Вы используете Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write " Вы используете Powershell 5"
}

В следующей статье мы рассмотрим, как обновить версию PowerShell в Windows.

В этой статье расскажем, как обновить Windows PowerShell до актуальной версии 5.1 и установить (обновить) PowerShell Core 7.3. На данный момент существуют две ветки PowerShell:

— Старая версия Windows PowerShell (максимальная версия 5.1, которая больше не развивается).

— Новая платформа PowerShell Core (доступна версия 7.3).

Несмотря на то, что нумерация версий PowerShell продолжается с 5.1 (6.0, 6.1, 7.0 и т.д.), это две разные платформы.
Мы рассмотрим, как обновить Windows PowerShell и PowerShell Core.

PowerShell Core 7.x совместима с Windows PowerShell, что означает, что вы можете запускать старые скрипты и командлеты в PowerShell Core.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

Обновление Windows PowerShell до 5.1

Во всех версиях, начиная с Windows 10 и Windows Server 2016, Windows PowerShell 5.1 уже установлен по умолчанию.

В более ранних версиях (Windows 7/8.1 и Windows Server 2008 R2/2012) обновление до PowerShell 5.1 выполняется вручную. Например, в Windows Server 2012 R2 (Windows 8.1) установлена PowerShell 4.0.

Попробуем обновить версию PowerShell в Windows Server 2012 R2 до 5.1.

1. Проверьте текущую версию PowerShell:

$PSVersionTable.PSVersion

2. Для обновления PowerShell до версии 5.1 установите Windows Management Framework (WMF) 5.1, который требует .NET Framework 4.5.2 или выше. Чтобы убедиться, что у вас установлена нужная версия .NET, выполните команду:

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release).Release

3. Если у вас устаревшая версия .NET (например, 4.5.1), скачайте и установите NET Framework 4.8

4. После установки .NET 4.8 (потребуется перезагрузка) скачайте WMF 5.1 для Windows Server 2012 R2

5. Установите MSU файл Windows Management Framework 5.1.

6. Перезагрузите сервер, затем запустите консоль powershell.exe и убедитесь, что версия обновлена до PowerShell 5.1:

$PSVersionTable.PSVersion

Если у вас Windows Server 2008 R2 или Windows 7, вы также можете обновить PowerShell до 5.1 аналогичным способом: сначала установите .NET Framework 4.5.2 или выше, а затем установите WMF 5.1.

Установка/обновление PowerShell Core 7.x

PowerShell Core — это кроссплатформенная среда, которая активно развивается в отличие от Windows PowerShell 5.1. Она устанавливается отдельно от Windows PowerShell, поэтому обновление Windows PowerShell 5.1 до PowerShell Core невозможно.

На данный момент доступны версии PowerShell Core 6.x и 7.x. Рекомендуется использовать последнюю версию PowerShell Core (сейчас это 7.3), если вам не требуется особая совместимость с устаревшими скриптами.

Существует несколько способов обновления или установки PowerShell Core в Windows 10 и 11:

— С помощью MSI установщика PowerShell Core (скачивается на GitHub).

— С помощью менеджера пакетов WinGet.

— Через Microsoft Store.

Обновление PowerShell Core с помощью MSI установщика

1. Перейдите на страницу проекта PowerShell на GitHub и скачайте последнюю версию установочного пакета MSI.

2. Установите MSI файл. Во время установки доступны следующие опции:

Add PowerShell to Path Environment Variable — добавляет PowerShell в переменные окружения.

Register Windows Event Logging Manifest — регистрирует журнал событий для PowerShell.

Enable PowerShell Remoting — включает удалённое управление через WinRM.

Add ‘Open here’ context menu to Explorer — добавляет пункт в контекстное меню Проводника.

Add ‘Run with PowerShell 7’ context menu for PowerShell files — добавляет пункт для запуска скриптов через PowerShell 7.

3. Для автоматического обновления PowerShell Core через Windows Update или WSUS активируйте соответствующие опции.

Обновление PowerShell Core через WinGet

1. Если у вас установлен WinGet, вы можете установить или обновить PowerShell до актуальной версии командой:

winget install --id Microsoft.Powershell --source winget

2. Если нужно установить конкретную версию PowerShell Core, используйте:

winget install --id=Microsoft.PowerShell -v "7.1.2" -e

Для установки PowerShell Core из MSI пакета средствами SCCM/MDT/скриптами в тихом режиме можно использовать команду установки со следующими параметрами:

ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL
ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL
ENABLE_PSREMOTING
REGISTER_MANIFEST
ADD_PATH
DISABLE_TELEMETRY
USE_MU – использовать Microsoft Update для получения обновлений PSCore
ENABLE_MU – разрешить обновление PowerShell Core через Windows Update

Например, команда установки может выглядеть так:

msiexec.exe /package PowerShell-7.3.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 ADD_PATH=1 ENABLE_MU=1 ADD_PATH=1

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

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Эта команда загружает установочный MSI файл PowerShell 7.3 с GitHub и автоматически запускает установку через MSI Installer.

После завершения установки откроется окно PowerShell Core (pwsh.exe). Проверьте текущую версию PowerShell, чтобы убедиться, что теперь установлена последняя версия 7.3.3:

$PSVersionTable.PSVersion

Использование WinGet для установки или обновления PowerShell Core

Если у вас установлен пакетный менеджер WinGet, вы можете установить или обновить PowerShell до актуальной версии с помощью следующей команды:

winget install --id Microsoft.Powershell --source winget

Если нужно установить конкретную версию PowerShell Core, выполните команду:

winget install --id=Microsoft.PowerShell -v "7.1.2" -e

Использование Chocolatey для установки или обновления PowerShell

Если вы используете менеджер пакетов Chocolatey, для установки или обновления PowerShell 5.1 используйте следующие команды:

choco install powershell -y

choco upgrade powershell -y

Для обновления PowerShell 7.x:

choco upgrade pwsh -y

Важные каталоги PowerShell

Обратите внимание на местоположение файлов различных версий PowerShell:

— Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0

— PowerShell Core 6.x: $env:ProgramFiles\PowerShell\6

— PowerShell 7.x: $env:ProgramFiles\PowerShell\7

При установке PowerShell 7.3, если на компьютере уже была установлена версия 6.x, каталог $env:ProgramFiles\PowerShell\6 автоматически удаляется.

Также обратите внимание, что исполняемый файл PowerShell Core теперь называется pwsh.exe и находится в каталоге c:\Program Files\PowerShell\7\pwsh.exe. У него есть собственная иконка в меню Пуск.

— Для запуска Windows PowerShell (на базе .NET Framework) используйте команду:

powershell.exe

— Для запуска PowerShell Core (на базе .NET Core) используйте команду:

pwsh.exe

Использование двух версий PowerShell

Теперь на вашем компьютере могут быть установлены обе версии PowerShell: Windows PowerShell 5.1 и PowerShell Core 7.3

Чтобы проверить версию PowerShell Core, вы можете выполнить следующую команду:

(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version

Также можно проверить версию PowerShell на удалённом компьютере:

Invoke-Command -ComputerName computer1 -Scriptblock {(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version}

Запуск предыдущих версий PowerShell

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

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4

Обновление PowerShell Core через Microsoft Store

В Windows 10 и 11 вы можете установить PowerShell через Microsoft Store. Приложение PowerShell можно найти вручную, или установить через WinGet:

winget search powershell --source msstore

winget install --id 9MZ1SNWT0N5D

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

Вы можете проверить, установлена ли у вас Store версия PowerShell Coreс помощью команды:

Get-AppPackage Microsoft.PowerShell

В этом примере пакет Microsoft.PowerShell_7.3.3.0_x64__8wekyb3d8bbwe установлен.

Но есть и недостатки, связанные с тем, что такой PowerShell будет запускаться в песочнице.

Установка/обновление PowerShell Core на удалённых компьютерах

Обновление PowerShell Core с помощью GPO

В домене Active Directory вы можете централизованно установить или обновить PowerShell Core с помощью групповой политики (GPO):

1. Скачайте MSI файл PowerShell и скопируйте его в каталог SYSVOL на контроллере домена.

2. Откройте консоль управления GPO (gpmc.msc), создайте новую политику и назначьте её на OU с компьютерами.

3. В разделе Computer Configuration -> Software Settings создайте новый пакет и укажите путь к MSI файлу PowerShell в каталоге SYSVOL.

4. Для обновления групповых политик установки ПО нужно перезагрузить компьютеры. Во время загрузки на всех компьютерах будет установлена новая версия PowerShell.

Обновление PowerShell на удалённых компьютерах из командной строки

Вы можете обновлять PowerShell на удалённых компьютерах через консоль. Пример команды для установки PowerShell с помощью MSI установщика:

Invoke-Command -ComputerName dc01 -ScriptBlock {Start-Process msiexec.exe -ArgumentList '/package "\\srv1\share\PowerShell-7.3.3-win-x64.msi" /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1' -Wait}

Следующий скрипт позволит выбрать все активные компьютеры с Windows 10 из домена Active Directory и запустить на каждом из них загрузку и установку PowerShell Core:

$creds = $(Get-Credential)
$computers = Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"'
ForEach ($computer in $computers) {
Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"}
}

Для использование командлета GetADComputer на компьютере должен быть установлен модуль AD PowerShell.

Будьте внимательными при использовании команд PowerShell Remoting при подключении к удаленным компьютерам (Enter-PSSession, Invoke-Command). Если вам нужно подключиться к точке управления PowerShell 7 нужно использовать команду:

Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7"

Иначе вы подключитесь к точке PowerShell Remoting 5.1.

Обновление PowerShell через Windows Update или WSUS

Начиная с версии 7.2, PowerShell Core поддерживает автоматическое обновление через Windows Update. Для этого включите опции автоматического обновления при установке MSI пакета.

Первая опция разрешает автоматическое обновление PowerShell через любой канал (включает параметр UseMU =1 в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShellCore)

Второй чекбокс – разрешает получать обновления для всего ПО Microsoft, не только для Windows. Если опция отключена, вы не будете получать обновления PowerShell с Microsoft Update, но можете получать их с вашего WSUS/SCCM (параметр реестра registeredwithAU=1 в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\7971F918-A847-4430-9279-4A52D1EFE18D)

Для проверки наличия обновлений откройте Настройки > Обновление и безопасность > Windows Update > Дополнительные параметры и убедитесь, что активирована опция Получать обновления для других продуктов Microsoft.

Теперь при проверке обновлений через Windows Update или через модуль PSWindowsUpdate, вы будете получать обновления для PowerShell Core.

Таким образом, вы можете выбрать удобный для вас способ обновления Windows PowerShell и PowerShell Core, будь то использование MSI пакета, WinGet, Microsoft Store, или групповых политик.


UPD Метод опередления версии найденный мной оказался неверным. Вот правильный метод

Попытался узнать версию Powershell в свежеустановленном Windows Server 2008 R2 методом найденном в Интернет.

Powershell Version

Powershell Version

Безусловно радует то, что это вторая версия Powershell. Это вам и красивый отладчик, и Remotings, и многое другое. Но не могу не придраться к тому, что в финальной версии так и не убрали признак CTP выпуска.


Trackbacks & Pingbacks

  1. способ определения версии, на который вы ссылаетесь не совсем коректен (если не сказать совсем не корректен)

    Дело в том, что версия Host’а и версия PowerShell’а есть 2 большие разницы, хотя значения версий могут совпадать (и связаны между собой примерно так же, как версия MSWord — с версией Windows)

    Информация о версии содержится в переменной $PSVersionTable
    для того, чтобы отличить одну версию Posh от другой придется обратится к $PSVersionTable.buildversion и сравнивать поля Major, Minor, Build, Revision

    http://powershell.com/cs/blogs/tobias/archive/2010/01/21/are-you-using-the-correct-powershell-version.aspx

    | Ответить
    Опубликовано 15 years, 1 month ago

    • Вот уж действительно не углядел. Благодарю

      | Ответить
      Опубликовано 14 years, 11 months ago

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Advance codec for player windows media
  • Как установить standoff 2 на компьютер windows 7
  • Download microsoft windows installer
  • Вход в windows по рутокен
  • Управление дисками на windows server 2019