Обновите Powershell через командную строку
Я хочу обновить версию Powershell для машины. Можно ли это сделать через командную строку?
Моя текущая потребность заключается в обновлении с PS 4 до PS 5 на сервере Windows 2012R2.
Я предполагаю, что не существует универсального решения для всех версий Windows и всех версий PS, смешанных с предостережениями, такими как PS4, требующими Dotnet4.5, поэтому давайте оставим вопрос как можно более простым, как первые два предложения выше.
10 ответов
Вы должны написать свой собственный сценарий, чтобы сделать это. Предварительно написано, что сделает это для вас без каких-либо усилий с вашей стороны. Загрузка и установка файлов из Интернета - очень распространенная практика. Есть много онлайн-инструкций и видео о том, как это сделать.
Перевод:
- Вы переходите по URL, на который указывает Александр.
- Нажмите "Загрузить", чтобы перейти на следующую страницу, перейти на прямой URL и сохранить эту ссылку.
- Затем используйте веб-командлеты PowerShell, чтобы загрузить этот файл.
- Затем используйте командлеты, чтобы начать установку или установку без вывода сообщений.
Есть много примеров в Интернете на тему, как загрузить файл из Интернета. Даже готовые образцы, которые вы можете просмотреть и настроить для вас.
Посмотрите галерею 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.