Обновите Powershell через командную строку

Я хочу обновить версию Powershell для машины. Можно ли это сделать через командную строку?

Моя текущая потребность заключается в обновлении с PS 4 до PS 5 на сервере Windows 2012R2.

Я предполагаю, что не существует универсального решения для всех версий Windows и всех версий PS, смешанных с предостережениями, такими как PS4, требующими Dotnet4.5, поэтому давайте оставим вопрос как можно более простым, как первые два предложения выше.

10 ответов

Решение

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

Перевод:

  1. Вы переходите по URL, на который указывает Александр.
  2. Нажмите "Загрузить", чтобы перейти на следующую страницу, перейти на прямой URL и сохранить эту ссылку.
  3. Затем используйте веб-командлеты PowerShell, чтобы загрузить этот файл.
  4. Затем используйте командлеты, чтобы начать установку или установку без вывода сообщений.

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

Посмотрите галерею MS PowerShell в качестве отправной точки.

Или посмотрите примеры встроенной PowerShell и / или интерактивную справку.

# Get parameters, examples, full and Online help for a cmdlet or function

(Get-Command -Name Invoke-WebRequest).Parameters
Get-help -Name Invoke-WebRequest -Examples
Get-help -Name Invoke-WebRequest -Full
Get-help -Name Invoke-WebRequest -Online

(Get-Command -Name Invoke-Command).Parameters
Get-help -Name Invoke-Command -Examples
Get-help -Name Invoke-Command -Full
Get-help -Name Invoke-Command -Online

(Get-Command -Name Start-Process).Parameters
Get-help -Name Start-Process -Examples
Get-help -Name Start-Process -Full
Get-help -Name Start-Process -Online

Попробуйте: iex "& {$ (irm https://aka.ms/install-powershell.ps1)} -UseMSI"

А затем запустите MSI с вашими параметрами.

После этого вам необходимо обновить модули.

Ссылка:

https://www.thomasmaurer.ch/2019/03/how-to-install-and-update-powershell-6/

https://www.thomasmaurer.ch/2019/02/update-powershellget-and-packagemanagement/

Откройте Powershell от имени администратора и введите следующую команду:

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

Вы можете использовать WinGet для обновления таких пакетов, как powersheel.

Введение в WinGet https://docs.microsoft.com/fr-fr/windows/package-manager/winget/

Документ команды обновления https://docs.microsoft.com/fr-fr/windows/package-manager/winget/upgrade

Чтобы обновить все пакеты с помощью WinGet, введитеwinget upgrade --allв терминале от имени администратора.

Вот небольшой трюк с использованием шоколада

#Install Chocolatey
#region
echo "Setting up Chocolatey software package manager"
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT

Get-PackageProvider -Name chocolatey -Force

echo "Setting up Full Chocolatey Install"
Install-Package -Name Chocolatey -Force -ProviderName chocolatey
$chocopath = (Get-Package chocolatey | 
            ?{$_.Name -eq "chocolatey"} | 
                Select @{N="Source";E={((($a=($_.Source -split "\\"))[0..($a.length - 2)]) -join "\"),"Tools\chocolateyInstall" -join "\"}} | 
                    Select -ExpandProperty Source)
& $chocopath "upgrade all -y"
choco install chocolatey-core.extension --force

echo "Creating daily task to automatically upgrade Chocolatey packages"
# adapted from https://blogs.technet.microsoft.com/heyscriptingguy/2013/11/23/using-scheduled-tasks-and-scheduled-jobs-in-powershell/
$ScheduledJob = @{
    Name = "Chocolatey Daily Upgrade"
    ScriptBlock = {choco upgrade all -y}
    Trigger = New-JobTrigger -Daily -at 2am
    ScheduledJobOption = New-ScheduledJobOption -RunElevated -MultipleInstancePolicy StopExisting -RequireNetwork
}
Register-ScheduledJob @ScheduledJob
#endregion

#Update Powershell
#region
$ErrorActionPreference = "silentlycontinue"

$PSVersionTable.PSVersion
choco install powershell -y
choco upgrade powershell -y

$ErrorActionPreference = "continue"
#endregion

Хотя и не та версия PS, которую просил ОП; вингет делает это.
winget install --name PowerShell --exact

Вы должны скачать WMF 5.0 здесь. Затем запустите команду из cmd:

wusa.exe D:\W2K12-KB3134759-x64.msu

или где вы скачали пакет.

Не думаю, что это будет работать с PS5, но для Windows 10 и PS 7+ вы можете легко обновиться с помощью

      winget upgrade powershell

И может сделать это изнутри самой PowerShell.

Это сработало для меня:

      dotnet tool update --global PowerShell

Инструмент «powershell» был успешно обновлен с версии «7.3.3» до версии «7.3.9».

Спасибо @LosManos за этот комментарий.

Шпаргалка — Обновление до PS 5.1 Просто как 123 — Примерное время выполнения — 30 минут

1.) Установите, убедитесь, что .NET Framework 4.5.2 или новее, если нет. Загрузите — установите версию 4.8 здесь:https://go.microsoft.com/fwlink/?linkid=2088631 и перезагрузите компьютер .

2.) Установите Windows Management Framework 5.1https://go.microsoft.com/fwlink/?linkid=839516 — выберите свою ОС — установите — перезагрузите компьютер.

3.) Откройте консоль Powershell и убедитесь, что она обновлена ​​до версии 5.1, введите $host или $PSVersionTable.PSVersion.

Другие вопросы по тегам