SUP: Поиск недокачанных обновлений

Относительно недавно вышел Service Pack 3 для Office 2007, проблем с его распространением через SCCM/WSUS оказалось больше, чем ожидалось. То, что для него требуется языков больше, чем необходимо администратору пестрит множество блогов, но очень мало кто описывает решение данной проблемы, в основном описывая какие нужно языки докачать… Но это решение подходит тем, кто использует англоязычную версию. Что же делать тем, кто использует русскую, украинскую и еще какую либо версию, отличающуюся от западной? Изначально мною проблема решалась следующим образом — я, как и все, закачал английскую, русскую, испанскую и т.д. версии, как было описано в других блогах, найденных в гугле. На серверах всё прошло успешно и я расслабился, но ко мне обратились коллеги, которые сказали, что на некоторых рабочих станциях обновление висит на загрузке 50%. Такая ситуация возникает не в первый раз и не только с этим обновлением, я решил разобраться с ней более детально. Первое, что я сделал, это открыл многим не безызвестную утилиту — SCCM Client Center и увидел, что клиент не может скачать несколько пакетов обновлений. Имея только guid’ы обновлений, я написал скрипт, который отображал мне полную информацию об обновлении, в том числе Bundle update («связка» обновлений, в которую входит данное обновление), ссылка на скачивание, имя файла и самое главное — язык.

Get-SMSUpdateInfo.ps1:

Param(
[Parameter(Mandatory = $False)][guid]$Identity,
[Parameter(Mandatory = $False)][string]$SMSServer
)
If (!($SMSServer)) {$SMSServer = '.'}
$NameSpace = 'ROOT\sms\Site_' + (gwmi -ComputerName $SMSServer -NameSpace 'ROOT\Sms' -Class SMS_ProviderLocation).SiteCode
If ($Identity) {$ContentFiles = gwmi -NameSpace $NameSpace -Class SMS_CIToContent -ComputerName $SMSServer -Filter "ContentUniqueId='$Identity'"}
Else {$ContentFiles = gwmi -NameSpace $NameSpace -Class SMS_CIToContent -ComputerName $SMSServer}
	ForEach ($ContentFile in $ContentFiles) {
		$CiId=$ContentFile.CI_ID
		$Update = gwmi -NameSpace $NameSpace -Class SMS_SoftwareUpdate -ComputerName $SMSServer -Filter "CI_ID='$CiId'"
		If ($Update){
			$ContentId = $ContentFile.ContentID
			$ContentLocales = $ContentFile.ContentLocales
			$Content = gwmi -NameSpace $NameSpace -Class SMS_CIContentFiles -ComputerName $SMSServer -Filter "ContentID='$ContentId'"
			$Locale = gwmi -NameSpace $NameSpace -Class SMS_CategoryInstance -ComputerName $SMSServer -Filter "CategoryInstance_UniqueId='$ContentLocales'"
			$Properties = @{'Identity' = $ContentFile.ContentUniqueId;
							'FileName' = $Content.FileName;
							'FileSize' = $Content.FileSize;
							'Language' = $Locale.LocalizedCategoryInstanceName
							'DownloadUrl' = $Content.SourceURL
							'Bundle' = $Update.LocalizedDisplayName
							'ArticleId' = $Update.ArticleId
							'InfoUrl' = $Update.LocalizedInformativeURL
							'Description' = $Update.LocalizedDescription
							}
			$Object = New-Object -TypeName PSObject -Property $Properties
		}
		Write-Output -InputObject $Object
	}

Данный скрипт необходимо запускать от имени администратора сервера SCCM. После того, как вы скопировали скрипт, сохраните его в удобной для вас локации и введите команду .\Get-SMSUpdateInfo.ps1 -Identity ‘тут guid злополучного обновления’. Если скрипт запускается не на сервере SCCM, то укажите -SMSServer ‘имя сервера SCCM’.

Реклама

Детали bobgreen84
System Center Products Specialist

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: