Вопрос: Как принять EULA для обновлений программного обеспечения, развернутых через SCCM, используя Powershell


Я пытаюсь использовать Start-CMSoftwareUpdateDeployment для развертывания группы обновления программного обеспечения в существующую коллекцию.

PS WHO:\> Start-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName "Update Group - Microsoft Updates" -CollectionName `
Eval_OSUpdates -DeploymentType Required -SendWakeUpPacket $true -AllowRestart $true -PersistOnWriteFilterDevice $true `
-DownloadFromMicrosoftUpdate $true -DeploymentName "Evaluation Deployment - Update Group - Microsoft Updates" `
-UserNotification DisplayAll -RestartWorkstation $false -AllowUseMeteredNetwork $true

Все необходимые параметры даны, однако я получаю следующую ошибку при ее выполнении:

Start-CMSoftwareUpdateDeployment : ConfigMgr Error Object:
instance of SMS_ExtendedStatus
{
    Description = "One or more updates are present for which a EULA exists which hasn't been approved.";
    ErrorCode = 1078462208;
    File = "e:\\nts_sccm_release\\sms\\siteserver\\sdk_provider\\smsprov\\sspciassignment.cpp";
    Line = 361;
    Operation = "PutInstance";
    ParameterInfo = "";
    ProviderName = "ExtnProv";
    StatusCode = 2147749889;
};
At line:1 char:1
+ Start-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName "SoM Update Group - Mi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Microsoft.Confi...ploymentCommand:StartSoftwareUpdateDeploymentCommand) [Start-CMSoftware
   UpdateDeployment], WqlQueryException
    + FullyQualifiedErrorId : UnhandledExeception,Microsoft.ConfigurationManagement.Cmdlets.Sum.Commands.StartSoftwareUpdateDeployment
   Command

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

Я вижу командлет Get-SoftwareUpdateLicense, но все, что делает, это возвращение кровавого строка лицензионного соглашения, которое никто читает.

Сегодня я подошел к MSDN статью о методе AcceptEULA, но я не знаю, как назвать это при обновлении, так как обновление имеет тип SMS_SoftwareUpdate, но этот метод не указан, когда я подключаюсь к Get-Member, и, конечно, просто пытаться волей-неволей вызвать метод, выдает ошибку.

Подводя итог, вот где я застрял: я не знаю, как вызвать этот метод WMI на конкретном объекте SMS_SoftwareUpdate, используя powershell, если это имеет значение.


8
2018-03-19 15:01


Источник




Ответы:


Ну, так как никто не читает EULA, почему бы вам просто не принять их всех?

Get-WmiObject -ComputerName "sccmcs" -Class SMS_SoftwareUpdate -Namespace root\sms\site_ABC | 
    where {$_.EULAExists -eq $true} |
    foreach {$_.AcceptEula($true)}

Чтобы проверить, что вы можете запустить это до и после

Get-WmiObject -ComputerName "sccmcs" -Class SMS_SoftwareUpdate -Namespace root\sms\site_ABC | 
    where {$_.EULAExists -eq $true} | select LocalizedDisplayName, EULAExists, EULAAccepted, EULASignoffDate, EULASignoffUser | ft

3
2017-07-09 15:12



Я полагаю, это стоит попробовать - MDMoore313