Powershell을 사용하여 SCCM을 통해 배포 된 소프트웨어 업데이트에 대해 EULA를 수락하는 방법 “ExtnProv”; StatusCode =

Start-CMSoftwareUpdateDeploymentcmdlet 을 사용하여 소프트웨어 업데이트 그룹을 기존 컬렉션에 배포 하려고합니다 .

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를 수락하고 프로세스에 수동 단계를 거치지 않는 것이 좋습니다.

cmdlet Get-SoftwareUpdateLicense을 보았지만 아무도 읽지 않는 EULA 의 피 묻은 문자열 을 반환하는 것 입니다.

가까운 단계 오늘은 발견 MSDN의 ACCEPTEULA 방법에 대한 기사를, 그러나 나는 업데이트가 형 SMS_SoftwareUpdate의 한, 업데이트에 그것을 호출하는 방법을 모르겠지만, 그 방법은 때 파이프에 나열되지 않은 Get-Member, 그리고 물론 willy nilly 호출하려고하면 오류가 발생합니다.

요약하면, 그것이 내가 멈춰있는 곳입니다. 특별한 SMS_SoftwareUpdate 객체 에서이 WMI 메소드를 호출하는 방법을 모르겠습니다.



답변

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