Como aceitar os EULAs para atualizações de software implantadas por meio do SCCM usando o Powershell

8

Estou tentando usar o cmdlet Start-CMSoftwareUpdateDeployment para implantar um grupo de atualização de software em uma coleção 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

Todos os parâmetros necessários são fornecidos, no entanto, recebo o seguinte erro na execução:

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

Tenho certeza de que sei qual atualização necessária o EULA aceitou, mas, ao tentar automatizar isso, seria bom aceitar qualquer EULAs programaticamente e não ter etapas manuais no processo.

Eu vejo o cmdlet Get-SoftwareUpdateLicense , mas tudo o que isso faz é retornar uma string sangrenta do EULA, que nobody diz.

A um passo de hoje, encontrei um artigo sobre MSDN sobre o método AcceptEULA, mas eu não não sei como chamá-lo na atualização, como a atualização é do tipo SMS_SoftwareUpdate, mas esse método não está listado quando eu canalizar para Get-Member e, claro, apenas tentando willy nilly chamar o método lança um erro. / p>

Para resumir, é aí que estou preso: não sei como chamar esse método WMI em um determinado objeto SMS_SoftwareUpdate, usando o powershell se isso faz diferença.

    
por MDMoore313 19.03.2014 / 16:01

1 resposta

3

Bem, como ninguém lê o EULA, por que você simplesmente não aceita todas?

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

Para verificar, você pode executar isso antes e depois

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