Powershell: исправление Windows на нескольких серверах
1406
Calculating Machine
У нас около 1000+ серверов, и они исправляются WSUS. В WSUS мы назначили патч и после этого заходим на серверы и скачиваем n Установите патчи. После этого мы перезагружаем машину в соответствии с графиком.
Я хочу автоматизировать загрузку патча и установку патча. Я получил некоторый сценарий, но не уверен, что это лучший или любой другой способ также доступен.
Вот сценарий
$UpdateSession = New-Object -Com Microsoft.Update.Session $UpdateSearcher = $UpdateSession.CreateUpdateSearcher() Write-Host("Searching for applicable updates...") -Fore Green $SearchResult = $UpdateSearcher.Search("IsInstalled=0 and Type='Software'") Write-Host("") Write-Host("List of applicable items on the machine:") -Fore Green For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) Write-Host( ($X + 1).ToString() + "> " + $Update.Title) } If ($SearchResult.Updates.Count -eq 0) { Write-Host("There are no applicable updates.") Exit } #Write-Host("") #Write-Host("Creating collection of updates to download:") -Fore Green $UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) #Write-Host( ($X + 1).ToString() + "> Adding: " + $Update.Title) $Null = $UpdatesToDownload.Add($Update) } Write-Host("") Write-Host("Downloading Updates...") -Fore Green $Downloader = $UpdateSession.CreateUpdateDownloader() $Downloader.Updates = $UpdatesToDownload $Null = $Downloader.Download() #Write-Host("") #Write-Host("List of Downloaded Updates...") -Fore Green $UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl For ($X = 0; $X -lt $SearchResult.Updates.Count; $X++){ $Update = $SearchResult.Updates.Item($X) If ($Update.IsDownloaded) { #Write-Host( ($X + 1).ToString() + "> " + $Update.Title) $Null = $UpdatesToInstall.Add($Update) } } $Install = [System.String]$Args[0] $Reboot = [System.String]$Args[1] If (!$Install){ $Install = Read-Host("Would you like to install these updates now? (Y/N)") } If ($Install.ToUpper() -eq "Y" -or $Install.ToUpper() -eq "YES"){ Write-Host("") Write-Host("Installing Updates...") -Fore Green $Installer = $UpdateSession.CreateUpdateInstaller() $Installer.Updates = $UpdatesToInstall $InstallationResult = $Installer.Install() Write-Host("") Write-Host("List of Updates Installed with Results:") -Fore Green For ($X = 0; $X -lt $UpdatesToInstall.Count; $X++){ Write-Host($UpdatesToInstall.Item($X).Title + ": " + $InstallationResult.GetUpdateResult($X).ResultCode) } Write-Host("") Write-Host("Installation Result: " + $InstallationResult.ResultCode) Write-Host(" Reboot Required: " + $InstallationResult.RebootRequired) If ($InstallationResult.RebootRequire -eq $True){ If (!$Reboot){ $Reboot = Read-Host("Would you like to install these updates now? (Y/N)") } If ($Reboot.ToUpper() -eq "Y" -or $Reboot.ToUpper() -eq "YES"){ Write-Host("") Write-Host("Rebooting...") -Fore Green (Get-WMIObject -Class Win32_OperatingSystem).Reboot() } } }
Может ли этот скрипт выполнять действия на нескольких серверах? Можем ли мы получить отчет об успешной загрузке / успешной установке.
Есть ли другие варианты для выполнения той же деятельности?
Спасибо за ваше время.
Что показало ваше тестирование? Были ли ошибки?
DavidPostill 8 лет назад
0
Нет ошибок. Он отлично работает на одной машине.
Calculating Machine 8 лет назад
0
Вы спрашиваете: «Может ли этот скрипт выполнять действия на нескольких серверах?». Мы не можем проверить для вас. ** Вам необходимо выполнить надлежащее тестирование перед развертыванием такого скрипта. Мы не можем проверить это для вас.
DavidPostill 8 лет назад
0
@DavidPostill Я полностью согласен с вами. Это мой подход к достижению этого. Я просто хочу знать, если кто-то сделал подобное, то это было бы очень полезно.
Calculating Machine 8 лет назад
0
Промышленная практика, как правило, заключается в использовании SCCM для центров обработки данных уровня предприятия (я думаю, что подходит 1000 серверов). Для решения по принципу «сворачивай сам» с использованием только WSUS и без SCCM я бы настроил серверы на автоматическую установку всего, что я нажимал на WSUS, и настройку групп машин для различных периодов перезагрузки. Затем я бы использовал функции powershell и csv-файл с соответствующими параметрами для их перезагрузки. Но, если серьезно, SCCM был построен для этого. И это дает вам намного больше. Кроме того, Конфигурация требуемого состояния (DSC) является способом PS для обработки конфигурации. управление. Я не использовал это, но он может сделать это тоже.
Xalorous 8 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
6
Хорошее руководство по PowerShell, начало работы с более продвинутым использованием
-
5
Отключение звукового сигнала окна cmd
-
3
Powershell пинг до бесконечности
-
-
5
Сочетание клавиш для вставки в командной строке Windows
-
5
Какие преимущества может получить средний гик от Powershell?
-
1
Powershell: выполнить операцию для всех файлов в каталоге (foreach)
-
1
Выделение Powershell / CMD для копирования правой кнопкой мыши в Vista
-
3
Что такое Windows PowerShell?
-
5
Как сделать скрипт Powershell (или другой) для изменения разрешения экрана?
-
5
Получить текущий UNC-путь из локального пути в powershell