Powershell
如何接受 EULA 以使用 Powershell 通過 SCCM 部署的軟體更新
我正在嘗試使用
Start-CMSoftwareUpdateDeployment
cmdlet 將軟體更新組部署到現有集合。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字元串,沒有人閱讀。今天更近一步,我發現了一篇關於 AcceptEULA 方法的MSDN文章,但我不知道如何在更新中呼叫它,因為更新的類型是 SMS_SoftwareUpdate,但是當我通過管道傳輸
Get-Member
到當然只是試圖隨意呼叫該方法會引發錯誤。總而言之,這就是我所困的地方:我不知道如何在特定的 SMS_SoftwareUpdate 對像上呼叫此 WMI 方法,如果這會有所不同,請使用 powershell。
好吧,既然沒有人閱讀 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