проблемы sccm и wsus

Позвольте мне попытаться объяснить мою проблему. У меня оффлайн система (несколько серверов виртуальных и физических), которые предоставляются с обновлениями через SCCM. Мы регулярно получаем обновления от вышестоящего отдела. Контент копируется с помощью robocopy, а метаданные импортируются с помощью WSUSUTIL.exe

. Проблема в том, что контент уменьшается с помощью (предположительно) сценария отделом, поэтому у нас больше метаданных, чем фактических файлов. Это приводит к множеству проблем при попытке загрузить группу обновлений программного обеспечения. Нам предоставляется руководство для фильтрации обновлений, которые не включены, но это трудоемкий и не всегда надежный способ сделать это.

Я не знаю, есть ли технические или организационные трудности, которые привели к все так, как есть, но я боюсь, что не буду это менять.

Однако я придумал, как автоматически просто получать все обновления, которые у меня есть, в виде файла.

$list = [System.Collections.ArrayList] @()

$Finallist = [System.Collections.ArrayList] @()


net use Z: \\<WSUSServer_Content>  /persistent:no     


    Function Select-FolderDialog
    {
        param([string]$Description="Select Folder",[string]$RootFolder="Desktop")

     [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
         Out-Null     

       $objForm = New-Object System.Windows.Forms.FolderBrowserDialog
            $objForm.Rootfolder = $RootFolder
            $objForm.Description = $Description
            $Show = $objForm.ShowDialog()
            If ($Show -eq "OK")
            {
                Return $objForm.SelectedPath
            }
            Else
            {
                Write-Error "Operation cancelled by user."
            }
        }

 $Folder = Select-FolderDialog                                                  

 $updates1 = get-childitem -path $folder -file -r                               
 $updates = $Updates1.name                                                      


[void][reflection.assembly]::loadwithpartialname("Microsoft.Updateservices.administration")

$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope

$updatescope.FromArrivalDate = [datetime]"12/31/2018"



$Getupdate = (get-wsusserver).getupdates($updatescope)

    foreach ($Update in $Getupdate)
 {

$cab = $update.getinstallableitems().files.fileuri.segments | select-object -last 1    
      foreach ($item in $updates) {if ($item -eq $cab) {$list = $list + $Update.id.updateid}                           }

}
import-module 'd:\"SCCMServer"\ConfigurationManager.psd1'   
cd S01:
$Softwareupdates = get-cmsoftwareupdate -datepostedmin "31.12.2018" 

    foreach ($Softwareupdate in $Softwareupdates) {                                           
    Unique=Softwareupdate.CI_UniqueID    
      foreach ($li in $list){                                                                   
if ($li -eq $Unique) {$Finallist = $Finallist + $Softwareupdate.CI_ID}                        
        }

    }
New-CMSoftwareUpdateGroup -name "Test" -UpdateId $Finallist                

Идея в том, что я собираю все имена файлов содержимого, которое у меня есть, запускают их на сервере WSUS, поэтому я могу определить Unique_ID. Затем я запускаю Unique_ID для SCCM, чтобы получить идентификаторы, с помощью которых я могу создать группу обновления программного обеспечения. Пока что теория.

Если я запускаю скрипт, я получаю около 800 файлов обновления. В результате получается около 250 идентификаторов Unique_ID, что дает около 35 идентификаторов для SCCM. Когда я попытаюсь загрузить их, у меня возникнет ошибка загрузки.

Если моя логика верна, этого не должно было случиться, верно?

Моя логика верна? или это было плохое кодирование, поскольку я не специалист по PowerShell?

Спасибо за ваше мнение и извините за беспорядочное форматирование кода, а также за мой плохой английский.

Хорошего дня.

0
задан 11 April 2019 в 09:32
1 ответ

Во-первых, если вы используете SCCM для развертывания обновлений программного обеспечения, вам никогда не придется копировать файлы обновлений из WSUS, поскольку SCCM автоматически управляет файлами обновлений и сохраняет их в точке распространения. . Все, что вам нужно сделать, это добавить точку распространения для места, где вы хотите распространять. Я бы порекомендовал вам классифицировать обновления на основе ежемесячных / квартальных / накопительных. Это упростило бы вашу жизнь фильтрация обновлений. То, как SCCM ссылается на обновления в своей базе данных, отличается от WSUS. Как предлагает DavidW, вышестоящий отдел должен попытаться найти новый рабочий процесс и сделать его более простым и легким в развертывании и управлении.

0
ответ дан 24 November 2019 в 00:18

Теги

Похожие вопросы