Cómo aceptar EULA para actualizaciones de software implementadas a través de SCCM usando Powershell

8

Estoy tratando de usar el Start-CMSoftwareUpdateDeploymentcmdlet para implementar un grupo de actualización de software en una colección existente.

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

Se proporcionan todos los parámetros requeridos, sin embargo, recibo el siguiente error tras la ejecución:

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

Estoy bastante seguro de saber qué actualización necesitaba el EULA aceptado, pero al intentar automatizar esto, sería bueno aceptar cualquier EULA mediante programación y no tener pasos manuales en el proceso.

Veo el cmdlet Get-SoftwareUpdateLicense, pero todo lo que hace es devolver una cadena sangrienta del EULA, que nadie lee.

Un paso más cerca hoy, encontré un artículo de MSDN sobre el método AcceptEULA, pero no sé cómo llamarlo en la actualización, ya que la actualización es del tipo SMS_SoftwareUpdate, pero ese método no aparece en la lista cuando lo canalizo Get-Member, y de Por supuesto, solo tratando de llamar al método willy nilly arroja un error.

Para resumir, ahí es donde estoy atascado: no sé cómo llamar a este método WMI en un objeto SMS_SoftwareUpdate en particular, usando powershell si eso hace la diferencia.

MDMoore313
fuente

Respuestas:

3

Bueno, como nadie lee el EULA, ¿por qué no los aceptas a todos?

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

Para verificar, puede ejecutar esto antes y después

Get-WmiObject -ComputerName "sccmcs" -Class SMS_SoftwareUpdate -Namespace root\sms\site_ABC | 
    where {$_.EULAExists -eq $true} | select LocalizedDisplayName, EULAExists, EULAAccepted, EULASignoffDate, EULASignoffUser | ft
Compartimiento
fuente
Supongo que vale la pena intentarlo
MDMoore313