Powershellを使用してSCCM経由で展開されたソフトウェア更新プログラムのEULAを受け入れる方法


8

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、それが行うすべてが血まみれ返さある文字列 EULAの誰も読まないし。

今日一歩近づきましたが、AcceptEULAメソッドに関するMSDNの記事を見つけましたが、更新のタイプがSMS_SoftwareUpdateであるため、更新時にそれを呼び出す方法がわかりませんが、パイプをGet-Memberにかけたときにそのメソッドがリストされません。もちろん、メソッドを無邪気に呼び出そうとすると、エラーがスローされます。

要約すると、それが私が行き詰まっているところです:特定のSMS_SoftwareUpdateオブジェクトでこのWMIメソッドを呼び出す方法がわかりません。

回答:


3

さて、誰も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

これは試してみる価値があると思います
MDMoore313 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.