Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 6

Скрипт для бесплатного обновления Windows 7 до Windows 10: лайфхак



Как обновить PowerShell версию, за минуту

Как обновить PowerShell версию, за минуту

powershell-logo.jpg

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами научились определять версию PowerShell, которая установлена в вашей операционной системе. У вас она могла быть устаревшей, и я вам обещал, это исправить. В сегодняшней заметке, я вам покажу быстрый процесс, как обновить PowerShell версию в любой из операционных систем ,семейства Windows. Данные методы займут у вас не более нескольких минут. Как сказал Гагарин, поехали.

Что дает обновление версии PowerShell ?

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

Алгоритм обновления версии PowerShell

Хочу отметить, что алгоритм обновления будет одинаков для всех версий Windows начиная с 7 SP1, если у вас ниже, то установите сервисный пакет Service Pack 1 на семерку и двигайтесь дальше.

  • Определяете свою версию PowerShell
  • Проверяете наличие у вас пакета Microsoft .NET Framework 4.7, если нет, то устанавливаете его
  • Скачиваете пакет PowerShell 5.1
  • Устанавливаете пакет PowerShell 5.1

В моем примере я буду обновлять PowerShell в Windows 7 SP1. Моя текущая версия 2.0.

Obnovlenie-powershell-windows-7-01.jpg

Далее я вам рассказывал, как проверить версию Microsoft .NET Framework 4.7. Если она у вас не установлена, то сделать, это можно по ссылке:

https://www.microsoft.com/ru-RU/download/details.aspx?id=55167

Данный пакет подойдет:

  • Windows 7 с пакетом обновления 1 (SP1) (x86 и x64)
  • Windows 8.1 (x86 и x64)
  • Юбилейное обновление Windows 10 (x86 и x64)
  • Windows Server 2008 R2 с пакетом обновления 1 (SP1) (x64)
  • Windows Server 2012 (x64)
  • Windows Server 2012 R2 (x64)
  • Windows Server 2016 (x64)

Skachivanie-Microsoft-.NET-Framework-4.7.jpg

Так же советую вам произвести установку всех доступных обновлений, которые есть у вас в операционной системе, а так же убедиться, что вы получаете и дополнительные обновления. Для этого в перейдите по пути «Панель управленияВсе элементы панели управленияЦентр обновления WindowsНастройка параметров». Убедитесь, что у вас установлены галки:

  • Получать рекомендуемые обновления таким же образом, как и важные обновления
  • При обновлении Windows предоставлять обновления для других продуктов Майкрософт и проверить наличие нового необязательного программного обеспечения Майкрософт. Сюда и попадут Microsoft .NET Framework 4.7.

Parmetry-tsentra-obnovlenij.jpg

В Windows 10, данный пункт можно найти по пути «Параметры Windows — Обновление и безопасность — Центр обновления Windows — Дополнительные параметры»

Dopolnitelnye-parametry-obnovleniya-Windows-10.jpg

Далее, когда все обновления у вас установлены, вы можете скачивать автономный пакет PowerShell 5.1, пройдите по ссылке:

https://www.microsoft.com/en-us/download/details.aspx?id=54616 если ссылка будет не работать, то загрузить пакет PowerShell 5.1 можно и у меня, думаю MS не обидится

Нажимаем кнопку «Download».

Skachivanie-Windows-Management-Framework-5.1.jpg

У вас появится всплывающее окно, где вас попросят выбрать для какой операционной системы вы хотите скачать пакет, по первому названию цифр понятно, для какой версии пакет, так же обратите внимание на разрядность x86 и x64. В моем случае Windows 7 64-х битная. Для обновления версии PowerShell запускаем соответствующий автономный пакет обновления Windows. У меня это Win7AndW2K8R2-KB3191566-x64.zip, единственное вам нужно его распаковать. Запустив пакет, он проверит нет ли уже данного обновления или более свежего.

obnovit-powershell-2-do-5.1-01.jpg

Так как пакета в Windows 7 не оказалось, то вам предлагают установить KB3191566, соглашаемся.

obnovit-powershell-2-do-5.1-02.jpg

Принимаем лицензионное соглашение.

obnovit-powershell-2-do-5.1-03.jpg

Установка пакета с PowerShell 5.1 занимает пару минут.

obnovit-powershell-2-do-5.1-04.jpg

После чего потребуется обязательная перезагрузка вашей системы.

obnovit-powershell-2-do-5.1-05.jpg

После перезагрузки, открыв оболочку PowerShell и выполнив команду Get-Host вы видите, что версия PowerShell 2 превратилась в 5.1.14409.1005

obnovit-powershell-2-do-5.1-06.jpg

Так же вы наверняка обратили внимание, что совместно с пакетом обновления в архиве лежит скрипт Install-WMF5.1.ps1. В задачи данного скрипта входит проверка вашей текущей версии и поиск зависимостей в виде пакетов .NET Framework. Если их не будет, то вас об этом уведомят. Так, что можете смело щелкать правым кликом по скрипту и так же выполнять его. Если у вас в системе не разрешено выполнение неподписанных цифровой подписью сценариев, то вы увидите ошибку «Выполнение скриптов запрещено», как это обходить посмотрите по ссылке, там я приводил команду Set-ExecutionPolicy remotesigned.

Так же может выскочить уведомление, что запрещено изменять раздел реестра, это из-за того, что оболочка PowerShell запущена не из под админана. Запустите ее в режиме администратора.

Obnovlenie-powershell-cherez-skript.jpg

После чего скрипт у вас успешно отработает.

powershell-vklyuchenie-nepodpisannyh-stsenariev.jpg

Установка Windows Management Framework and PowerShell 5.1.14409.20180811 через репозиторий choco

Есть такой офигенный репозиторий choco, который позволяет одной командой всегда иметь самые последние официальные версии продуктов и утилит, и PowerShell тут не исключение. Как подключать в Windows репозиторий choco я рассказывал, можете посмотреть. Когда он у вас есть вы открываете командную строку cmd , обязательно от имени администратора и вводите команду:

choco install powershell

Вот так вот просто. В итоге запуститься удаленный скрипт из репозитория, вам покажут какая версия PowerShell самая последняя и спросят, хотите ли вы ее установить, нажимаете Y и тут начинается магия автоматической установки со всеми зависимостями и пакетами KB обновлений.

Ustanovka-PowerShell-5.1-iz-repozitoriya-choco.jpg

Осталось перезагрузить вашу систему и проверить новую, установленную версию PowerShell.

На этом у меня все, если остались вопросы или другие методы, о которых я не упомянул, то жду их в комментариях. С вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.

Фев 21, 2019 09:00

Первый включает запуск автономной программы установки со страницы сайта Github. Второй — средствами самого компонента системы. Мы рассмотрим возможность применения обоих вариантов.

Обновить PowerShell

Посетите официальную страницу по адресу:

https://github.com/PowerShell/PowerShell/releases

и найдите нужный файл с расширением MSI. Выбирайте файл согласно своей версии операционной системы (32-битная или 64-битная). После загрузки запустите программу автоматической установки. Пошаговый мастер позаботится обо всем за вас, никаких сложностей с этим возникнуть не должно.

Это был первый метод. Если вы хотите обновить PowerShell изнутри самого компонента, то выполните следующие шаги. Откройте его с административными правами и дайте такую команду:

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

подтвердив её клавишей ввода на клавиатуре.

Сначала будет загружен установочный файл с той же страницы, как и в первом методе. Для этого потребуется некоторое время, подождите, так как может казаться, что на самом деле ничего не происходит.

Затем вы пройдете через установку, которая идентична такой в MSI-файле. Позвольте процессу завершиться. На среднем по мощности устройстве это займет несколько минут. На медленной системе — около 15 минут.

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

Бывают случаи, когда вам необходимо запустить более старую версию PowerShell. Для этого вызовите окно системной утилиты «Выполнить» сочетанием клавиш Win+R на своей клавиатуре. Введите следующую команду:

C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Version 5

и нажмите клавишу «Ок».

Вы можете изменить номер версии в конце команды на другой, например — 2. Это запустит системный компонент версии 2.0.0. Спасибо за внимание!

PS-Windows-Update-000.jpg

Установка большого количества обновлений Windows Update обычно относится к тем рутинным операциям, которые каждый системный администратор хотел бы как можно сильнее автоматизировать. Действительно, данная задача занимает довольно много времени и требует время от времени отвлекаться, чтобы перейти от одного этапа к другому. Отчасти выручить в этой ситуации может создание собственного дистрибутива, уже включающего все необходимые обновления, но воспользоваться им удается не всегда. Иногда надо просто быстро обновить до актуального состояния какую-либо систему, тогда на помощь нам придет PowerShell.

Кроме того, в режиме аудита Windows 8 использовать Центр обновления Windows нельзя и установить обновления привычным образом не получится.

В этих, а также во многих других, случаях имеет смысл воспользоваться специальным модулем PowerShell для работы с Windows Update. Скачать его можно со страницы разработчика на Technet: Windows Update PowerShell Module. Мы настоятельно рекомендуем скачивать данный модуль именно оттуда.

Данный модуль работает в системах, начиная с Windows Vista и Server 2008 и требует PowerShell 2.0, хотя оптимально будет использование PowerShell 3.0 и выше.

Архив с модулем содержит папку PSWindowsUpdate, которую следует разместить в одном из двух возможных расположений:

  • %USERPROFILE%DocumentsWindowsPowerShellModules
  • %WINDIR%System32WindowsPowerShellv1.0Modules

Если вы хотите использовать данный модуль на постоянной основе, то имеет смысл разместить его в системной папке, в остальных случаях лучше использовать для этого директорию в профиле пользователя. Учтите, в папке Мои документы отсутствуют вложенные директории WindowsPowerShell и Modules, поэтому их следует создать самостоятельно.

PS-Windows-Update-001.jpgЧто дальше? В принципе уже сейчас можно воспользоваться одним из пакетных скриптов для данного модуля, доступных в сети. Но лучше сначала поработать с ним самостоятельно, после чего создать свой собственный пакетный файл.

Откроем консоль PowerShell от имени Администратора. Прежде всего выясним установленную политику командой:

Get-ExecutionPolicy

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

Set-ExecutionPolicy RemoteSigned -Scope Process

Ключ -Scope позволяет задавать область применения политики, в данном случае это текущий процесс. Теперь можно выполнить импорт модуля командой:

Import-Module PSWindowsUpdate

В Windows 7 и иных системах, использующих PowerShell 2.0 вы можете столкнуться со следующей ошибкой: Имя «Unblock-File» не распознано как имя командлета. Она возникает из-за использования в одном из скриптов функции появившейся в PowerShell 3.0.

PS-Windows-Update-002-thumb-600xauto-6227.jpgОднако ее несложно исправить. В папке с модулем откройте файл PSWindowsUpdate.psm1 и удалите в первой строке последовательность:

| Unblock-File

PS-Windows-Update-003.jpgСохраните исправленный файл и повторите импорт модуля. Теперь можно приступить к работе с ним.

Прежде всего получим список доступных обновлений:

Get-WUInstall -ListOnly

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

PS-Windows-Update-004-thumb-600xauto-6231.jpgК счастью модуль обладает широкими возможностями. Мы можем исключить пакеты из списка по их категории, ключ -NotCategory, названию, ключ -NotTitle, или номеру обновления, ключ -NotKBArticleID. Используем каждый из них, в нашем случае уберем категорию языковых пакетов, Skype и обновление до Windows 10:

Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -ListOnly

Вот, уже гораздо лучше.

PS-Windows-Update-005-thumb-600xauto-6234.jpgТеперь можно установить обновления командой:

Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

Ключи -AcceptAll и -IgnoreReboot включают одобрение всех пакетов и подавляют требование перезагрузки после установки некоторых обновлений.

PS-Windows-Update-006-thumb-600xauto-6237.jpgУбедившись, что все работает как надо, можно создать собственный пакетный файл, откроем блокнот и в одну строку запишем:

PowerShell -ExecutionPolicy RemoteSigned -Command Import-Module PSWindowsUpdate; Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

Данная команда запускает PowerShell, устанавливает политику RemoteSigned, импортирует модуль, затем передает ему вышеуказанную команду. В общем делает все тоже самое, что мы только-что выполнили вручную. Сохраните данный файл как PSWindowsUpdate.cmd и теперь все что вам потребуется, это разместить модуль в нужном расположении и запустить данный пакетный файл с правами администратора.

Удобно? Да. Правда учтите, что некоторые обновления требуют обязательной установки предыдущих, поэтому, если вы давно не обновлялись, данный скрипт придется запускать несколько раз. Но это все равно проще, чем проделывать все эти операции вручную, кликнул на скрипт и занимайся своими делами, время от времени поглядывая на экран.

В Windows 8 языковые пакеты через WindowsUpdate не распространяются, поэтому команду можно немного упростить.

Get-WUInstall -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

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

Для установки отдельного пакета используйте команду (номер пакета использован исключительно для примера):

Get-WUInstall -KBArticleID KB3087916  -AcceptAll

Если надо установить несколько пакетов, то разделите их номера запятыми и добавьте ключ -IgnoreReboot, например:

Get-WUInstall -KBArticleID KB3066441, KB3078676  -AcceptAll -IgnoreReboot

PS-Windows-Update-007-thumb-600xauto-6240.jpg

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

PS-Windows-Update-008-thumb-600xauto-6243.jpgНадеемся, что данный материал поможет вам автоматизировать некоторые рутинные задачи и добавит в ваш арсенал новый, удобный инструмент.

Используемые источники:

  • http://pyatilistnik.org/how-to-upgrade-powershell-version/
  • https://advicesos.com/windows/obnovit-powershell.html
  • https://interface31.ru/tech_it/2015/08/ispolzuem-powershell-dlya-avtomatizacii-ustanovki-obnovleniy.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации