Come accettare gli EULA per gli aggiornamenti software distribuiti tramite SCCM utilizzando Powershell


8

Sto cercando di utilizzare il Start-CMSoftwareUpdateDeploymentcmdlet per distribuire un gruppo di aggiornamento software in una raccolta esistente.

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

Vengono forniti tutti i parametri richiesti, tuttavia al momento dell'esecuzione ricevo il seguente errore:

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

Sono abbastanza sicuro di sapere quale aggiornamento richiedesse l'accettazione dell'EULA, ma nel tentativo di automatizzarlo sarebbe bello accettare eventuali EULA a livello di programmazione e non avere passaggi manuali nel processo.

Vedo il cmdlet Get-SoftwareUpdateLicense, ma tutto ciò che fa è restituire una stringa insanguinata dell'EULA, che nessuno legge.

Un passo avanti oggi ho trovato un articolo MSDN sul metodo AcceptEULA, ma non so come chiamarlo sull'aggiornamento, poiché l'aggiornamento è di tipo SMS_SoftwareUpdate, ma quel metodo non è elencato quando eseguo il pipe Get-Membere Certo, sto solo cercando di chiamare volenti o nolenti il ​​metodo genera un errore.

Per riassumere, è qui che sono bloccato: non so come chiamare questo metodo WMI su un particolare oggetto SMS_SoftwareUpdate, usando powershell se questo fa la differenza.

Risposte:


3

Bene, dal momento che nessuno legge l'EULA, perché non li accetti e basta?

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

Per verificare puoi eseguirlo prima e dopo

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

Suppongo che valga la pena provare
MDMoore313,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.