Cara menerima EULA untuk pembaruan Perangkat Lunak yang digunakan melalui SCCM menggunakan Powershell

8

Saya mencoba menggunakan Start-CMSoftwareUpdateDeploymentcmdlet untuk menggunakan grup pembaruan perangkat lunak ke koleksi yang ada.

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

Semua parameter yang diperlukan diberikan, namun saya menerima kesalahan berikut saat eksekusi:

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

Saya cukup yakin saya tahu pembaruan mana yang dibutuhkan EULA diterima, tetapi dalam mencoba mengotomatiskan ini, akan lebih baik untuk menerima EULA apa pun secara terprogram dan tidak memiliki langkah manual dalam prosesnya.

Saya melihat cmdlet Get-SoftwareUpdateLicense, tetapi semua yang terjadi adalah mengembalikan string berdarah EULA, yang tidak dibaca oleh siapa pun .

Selangkah lebih dekat hari ini saya menemukan artikel MSDN pada metode AcceptEULA, tapi saya tidak tahu bagaimana menyebutnya pada pembaruan, karena pembaruannya bertipe SMS_SoftwareUpdate, tetapi metode itu tidak terdaftar ketika saya melakukan pipe to Get-Member, dan of Tentu saja hanya mau tak mau menyebut metode melempar kesalahan.

Untuk meringkas, di situlah saya terjebak: Saya tidak tahu bagaimana memanggil metode WMI ini pada objek SMS_SoftwareUpdate tertentu, menggunakan PowerShell jika itu membuat perbedaan.

MDMoore313
sumber

Jawaban:

3

Nah, karena tidak ada yang membaca EULA mengapa Anda tidak menerima saja semuanya?

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

Untuk memverifikasi, Anda dapat menjalankan ini sebelum dan sesudah

Get-WmiObject -ComputerName "sccmcs" -Class SMS_SoftwareUpdate -Namespace root\sms\site_ABC | 
    where {$_.EULAExists -eq $true} | select LocalizedDisplayName, EULAExists, EULAAccepted, EULASignoffDate, EULASignoffUser | ft
Tempat sampah
sumber
Saya kira ini patut dicoba
MDMoore313