Я пытаюсь использовать Start-CMSoftwareUpdateDeployment
командлет для развертывания группы обновлений программного обеспечения в существующей коллекции.
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 программно и не выполнять ручных действий в этом процессе.
Я вижу командлет Get-SoftwareUpdateLicense
, но все, что он делает, это возвращает кровавый строка Лицензионного соглашения с конечным пользователем, которое никто читает.
На шаг ближе сегодня я нашел MSDN статья о методе AcceptEULA, но я не знаю, как вызвать его при обновлении, поскольку обновление имеет тип SMS_SoftwareUpdate, но этот метод не отображается, когда я подключаюсь к Get-Member
, и, конечно же, просто попытка вызвать метод волей-неволей выдает ошибку.
Подводя итог, я застрял на этом: я не знаю, как вызвать этот метод WMI для конкретного объекта SMS_SoftwareUpdate, используя PowerShell, если это имеет значение.
Ну, если никто не читает лицензионное соглашение, почему бы вам просто не принять их все?
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