Powershell. Установка обновлений
13 May 2017
local_offer
powershell
Установка обновлений локально. Работает только с повышенными привелегиями (запуск от имени Администратора) и только локально.
$Criteria = "IsInstalled=0 and Type='Software'"
$Searcher = New-Object -ComObject Microsoft.Update.Searcher
$SearchResult = $Searcher.Search($Criteria).Updates
$Session = New-Object -ComObject Microsoft.Update.Session
$Downloader = $Session.CreateUpdateDownloader()
$Downloader.Updates = $SearchResult
$Downloader.Download()
$Installer = New-Object -ComObject Microsoft.Update.Installer
$Installer.Updates = $SearchResult
$Result = $Installer.Install()
## Перезагружаем если нужно
#If ($Result.rebootRequired) { Restart-Computer }
Вроде как единственный способ запустить удаленно (с помощью powrshell) на группе серверов это запуск через "Планировщик задач".
Import-Csv -Path "C:\Temp\servers.csv" | % {
if (Test-Connection $_.Name -Quiet){
$srv = $_.Name
Write-Host "Working on $srv" -ForegroundColor Green
$Expr = "schtasks /Create /S " + $_.Name + " /XML C:\Temp\Install_Updates.xml" + " /TN " + "InstallUpdates"
Invoke-Expression -Command $Expr
}
}
Еще вариант:
$packagePath = 'c:\temp\windows8.1-kb4103715-x64_43bebfcb5be43876fb6a13a4eb840174ecb1790c.msu'
Invoke-Command -ComputerName TS5 -ScriptBlock {
Start-Process -FilePath 'wusa.exe' -ArgumentList "$packagePath /extract C:\temp\" -Wait -PassThru
Start-Process -FilePath 'dism.exe' -ArgumentList "/online /add-package /PackagePath:C:\temp\Windows8.1-KB4103715-x64.cab" -Wait -PassThru
}
Другой способ
Скачиваем модуль Windows Update PowerShell Module, распаковывыем в C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
.
Import-Module PSWindowsUpdate
#Вывод команд
Get-Command –module PSWindowsUpdate