Удаленная установка обновлений Windows с помощью PowerShell. (немного PowerCLI)
У меня проблема со скриптом для удаленных обновлений Windows. Моя цель: обновить все серверы Windows, не используя WSUS или SCCM, из PowerShell без необходимости входа на все из них и запуска процесса обновления.
Для моего скрипта я использую модули powercli и PSWindowsUpdate. В целях тестирования я использую один хост в переменной $ hostname.
Так вот что у меня есть.
$Cred = Get-Credential Import-Module PSWindowsUpdate Invoke-Command -ComputerName $HostName {Import-Module PSWindowsUpdate} -Verbose -Credential $Cred Invoke-Command -ComputerName $HostName {Add-WUServiceManager -ServiceID 7971f918-a847-4430-9279-4a52d1efe18d -Confirm:$false} -Verbose -Credential $Cred Invoke-Command -ComputerName $HostName -ScriptBlock {Get-WUInstall -MicrosoftUpdate -IgnoreUserInput -AcceptAll -AutoReboot -Confirm:$FALSE -Verbose | Out-File C:\Setup\PSWindowsUpdate.log } -credential $cred Get-Content \\$HostName\c$\Setup\PSWindowsUpdate.log
После запуска скрипта все работает с выключением, снимком, включением, но я не могу установить какие-либо обновления. Я получаю ошибку ниже:
WARNING: To perform some operations you must run an elevated Windows PowerShell console.
WARNING: Can't access to machine "hostName". Try use: winrm qc
Когда я искал, я вижу, что не могу сделать никакого повышения в самой PowerShell, и я читаю некоторые сообщения о запуске CMD bat для запуска PowerShell с повышенными правами. Для меня не проблема скопировать на каждый сервер Windows скрипт обновления и получить пакет для запуска с повышенными правами, но это единственный способ?
Я сделаю пакетное решение, чтобы увидеть, чего я могу достичь, но есть ли еще какое-то решение в проблеме, с которой я сталкиваюсь? Кто-нибудь пробовал это?
Большое спасибо за уделенное время! Я также открыт для любых комментариев к моему коду или исправлениям!
Автор: StefTheo Источник Размещён: 15.10.2018 08:12issue.life
Установка обновлений Windows удаленно, используя PowerShell. (некоторые PowerCLI) — windows
У меня возникла проблема со сценарием для удаленных обновлений Windows. Моя цель: обновить все серверы Windows, не используя WSUS или SCCM, из PowerShell без необходимости входа в систему всех них и запуска процесса обновления.
Для моего скрипта я использую модули powercli и PSWindowsUpdate. Для целей тестирования я использую один хост в переменной $ hostname.
Итак, вот что у меня есть.
$Cred = Get-Credential Import-Module PSWindowsUpdate Invoke-Command -ComputerName $HostName {Import-Module PSWindowsUpdate} -Verbose -Credential $Cred Invoke-Command -ComputerName $HostName {Add-WUServiceManager -ServiceID 7971f918-a847-4430-9279-4a52d1efe18d -Confirm:$false} -Verbose -Credential $Cred Invoke-Command -ComputerName $HostName -ScriptBlock {Get-WUInstall -MicrosoftUpdate -IgnoreUserInput -AcceptAll -AutoReboot -Confirm:$FALSE -Verbose | Out-File C:\Setup\PSWindowsUpdate.log } -credential $cred Get-Content \\$HostName\c$\Setup\PSWindowsUpdate.log
После запуска скрипта все работает с выключенным, моментальным снимком, включается, но я не могу установить никаких обновлений. Я получаю ошибку ниже:
WARNING: To perform some operations you must run an elevated Windows PowerShell console.
WARNING: Can't access to machine "hostName". Try use: winrm qc
По мере того как я искал, я вижу, что я не могу сделать какой-либо возвышенности в PowerShell, и я читаю некоторые сообщения о запуске биты CMD для запуска PowerShell с повышенными правами. Мне не сложно копировать на каждый сервер Windows сценарий обновления и иметь пакет для запуска его с повышенными правами, но это единственный способ?
Я сделаю пакетное решение, чтобы увидеть, что я могу достичь, но есть ли другое решение проблемы, с которой я столкнулся? Кто-нибудь пробовал это?
Большое спасибо за уделенное время! Я также открыт для комментариев о моем коде или исправлениях!
qaru.site
Как обновить PowerShell версию, за минуту
Добрый день! Уважаемые читатели и гости 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.
Далее я вам рассказывал, как проверить версию 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)
Так же советую вам произвести установку всех доступных обновлений, которые есть у вас в операционной системе, а так же убедиться, что вы получаете и дополнительные обновления. Для этого в перейдите по пути «Панель управления\Все элементы панели управления\Центр обновления Windows\Настройка параметров». Убедитесь, что у вас установлены галки:
- Получать рекомендуемые обновления таким же образом, как и важные обновления
- При обновлении Windows предоставлять обновления для других продуктов Майкрософт и проверить наличие нового необязательного программного обеспечения Майкрософт. Сюда и попадут Microsoft .NET Framework 4.7.
В Windows 10, данный пункт можно найти по пути «Параметры Windows — Обновление и безопасность — Центр обновления Windows — Дополнительные параметры»
Далее, когда все обновления у вас установлены, вы можете скачивать автономный пакет PowerShell 5.1, пройдите по ссылке:
https://www.microsoft.com/en-us/download/details.aspx?id=54616 если ссылка будет не работать, то загрузить пакет PowerShell 5.1 можно и у меня, думаю MS не обидитсяНажимаем кнопку «Download».
У вас появится всплывающее окно, где вас попросят выбрать для какой операционной системы вы хотите скачать пакет, по первому названию цифр понятно, для какой версии пакет, так же обратите внимание на разрядность x86 и x64. В моем случае Windows 7 64-х битная. Для обновления версии PowerShell запускаем соответствующий автономный пакет обновления Windows. У меня это Win7AndW2K8R2-KB3191566-x64.zip, единственное вам нужно его распаковать. Запустив пакет, он проверит нет ли уже данного обновления или более свежего.
Так как пакета в Windows 7 не оказалось, то вам предлагают установить KB3191566, соглашаемся.
Принимаем лицензионное соглашение.
Установка пакета с PowerShell 5.1 занимает пару минут.
После чего потребуется обязательная перезагрузка вашей системы.
После перезагрузки, открыв оболочку PowerShell и выполнив команду Get-Host вы видите, что версия PowerShell 2 превратилась в 5.1.14409.1005
Так же вы наверняка обратили внимание, что совместно с пакетом обновления в архиве лежит скрипт Install-WMF5.1.ps1. В задачи данного скрипта входит проверка вашей текущей версии и поиск зависимостей в виде пакетов .NET Framework. Если их не будет, то вас об этом уведомят. Так, что можете смело щелкать правым кликом по скрипту и так же выполнять его. Если у вас в системе не разрешено выполнение неподписанных цифровой подписью сценариев, то вы увидите ошибку «Выполнение скриптов запрещено», как это обходить посмотрите по ссылке, там я приводил команду Set-ExecutionPolicy remotesigned.
Так же может выскочить уведомление, что запрещено изменять раздел реестра, это из-за того, что оболочка PowerShell запущена не из под админана. Запустите ее в режиме администратора.
После чего скрипт у вас успешно отработает.
Установка Windows Management Framework and PowerShell 5.1.14409.20180811 через репозиторий choco
Есть такой офигенный репозиторий choco, который позволяет одной командой всегда иметь самые последние официальные версии продуктов и утилит, и PowerShell тут не исключение. Как подключать в Windows репозиторий choco я рассказывал, можете посмотреть. Когда он у вас есть вы открываете командную строку cmd , обязательно от имени администратора и вводите команду:
Вот так вот просто. В итоге запуститься удаленный скрипт из репозитория, вам покажут какая версия PowerShell самая последняя и спросят, хотите ли вы ее установить, нажимаете Y и тут начинается магия автоматической установки со всеми зависимостями и пакетами KB обновлений.
Осталось перезагрузить вашу систему и проверить новую, установленную версию PowerShell.
На этом у меня все, если остались вопросы или другие методы, о которых я не упомянул, то жду их в комментариях. С вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.
pyatilistnik.org
Обновляем Powershell в Windows 7 — GEEK LIBRARY
Пришло время обновить Powershell на пользовательских машинах до самой последней версии (на сегодня это — версия 5.1), так как «перемен требуют наши сердца»? Нет ничего проще.
Кстати, чтобы узнать, какая версия PowerShell у нас установлена, запускаем консоль PowerShell (или ISE), вводим команду
и жмём клавишу ВВОД.
Содержимое строки PSVersion подскажет нам версию установленного Powershell:
Как я писал, на сегодня версия Powershell уже имеет номер 5.1. А на скриншоте — 2.0. Значит пора обновляться.
1. Идем на сайт Microsoft и забираем Windows Management Framework 5.1
Мой выбор сейчас — Powershell для Windows 7 x32 (с версией для x64 всё делается так же).
2. Установка тривиальна: далее-далее-далее.
- Перезагружаем компьютер и проверяем вышеописанной командой версию Powershell.
- Наслаждаемся проделанной работой и хвалим себя за то, что «мы сделали это»!
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Просмотров: 4 729
www.geeklib.ru
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
Ссылки
webnote.satin-pl.com
Обновляем PowerShell on Windows 7
Прочитано: 2 782
При установленной из образа Windows 7 Pro SP1 пакет PowerShell
PS C:\Windows\system32> get-host
Version: 2.0
Устанавливаем NetFramework 4.5, т.к для установки WMF 5.0 (Windows Management Framework 5.0) он необходим.
Хотя по ссылке: https://msdn.microsoft.com/en-us/library/5a4x27ek(v=vs.110).aspx доступен для скачивания пакет 4.7 версии, скачиваю его и устанавливаю
Supported Operating System
- Windows 7 Service Pack 1, Windows 8.1, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2 SP1
- Windows 8.1
- Windows 7 SP1
При установке NetFramework 4.7 on Windows 7 Pro x86 столкнулся:
Нажав по ссылке update выявилось, что в моей системе более не поддерживаемая версия браузера, а именно IE8 обновляю ее до IE 11 соответствующим обновлением. Потом кликаю снова по ссылке update.
Перейдя по ссылке обнаруживаю описание проблемы:
This issue occurs when the computer does not have the update for D3DComplier (D3DCompiler_47.dll) installed
Устанавливаю обновление: Windows6.1-KB4019990-x86.msu
После снова запускаю установку Net.Framework 4.7 и она успешно запускается и устанавливается, завершается.
После запускаю установку WMF, пакет: Win7-KB3134760-x86
После перезагружаем систему
Проверяю командной get-host предварительно запустив консоль PowerShell.
где видно, как произвелся апгрейд
Задача выполнена. Теперь я знаю в практическом эквиваленте, как совершить обновление пакета powershell на Windows системе, рабочей станции если точнее. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.
www.ekzorchik.ru
Как запустить обновление Windows из командной строки?
Центр обновления Windows — одна из наиболее заметных функций Windows 10. Поскольку с выпуском Windows 10 Windows была предложена покупателям как услуга, а не как продукт. В сценарии «Программное обеспечение как услуга» это привело к тому, что обновления для Windows 10 были включены по умолчанию и никто не мог их отключить. Теперь, в то время как некоторые критиковали этот шаг со стороны Microsoft, в конечном итоге это шаг навстречу клиенту. Потому что Центр обновления Windows помогает пользователям оставаться защищенными от всевозможных угроз и предоставлять им новейшие и самые лучшие решения от Microsoft. Итак, тем, кто ценит этот сервис, сегодня мы поговорим о другом способе запуска этих обновлений.
1] Запустите Центр обновления Windows, используя Windows Powershell
Для запуска обновлений Windows в Windows Powershell потребуется вручную установить модуль Центра обновления Windows, загрузить загруженные обновления Windows и установить обновления Windows. И для этого откройте Windows Powershell, выполнив поиск Powershell в окне поиска Cortana и запустите его с правами уровня администратора.
Затем введите:
Install-Module PSWindowsUpdate
Установится модуль обновления Windows для Windows Powershell.
После этого:
Get-WindowsUpdate
Будет выполнено подключение к серверам Центра обновления Windows и загружены обновления, если они найдены.
Наконец, введите:
Install-WindowsUpdate
Установятся обновления Windows, загруженные на ваш компьютер.
2] Запустите Центр обновления Windows с помощью командной строки
Командная строка в операционных системах Windows существует очень давно, в то время как Windows Powershell является сравнительно новым. Следовательно, он имеет аналогичные возможности для запуска обновлений Windows, но здесь следует подчеркнуть, что вам не нужно загружать какой-либо модуль для обновлений Windows.
Сначала откройте командную строку, выполнив по
ip-calculator.ru