Недавно у моей компании возникла проблема с нашими развертываниями SCCM из-за того, что репозиторий WMI стал поврежденным, и мы нашли статью в KB для решения этой проблемы, но нам нужно развернуть ее на 700+ системах, которые уже находятся в поле. Мы решили, что лучшим решением является развертывание статьи KB через GPO Powershell. Я изменил некоторые из приведенных ниже кодов, но когда работает объект групповой политики, он ничего не делает. Когда мы запускаем его автономно, он вызывает ошибку wusa, дающую возможность использовать wusa и терпит неудачу.Powershell; Network Share Развертывание MSU через GPO
Может кто-то протащить код и посмотреть, что мне не хватает, что привело к сбою?
Я, безусловно, открыт для предложений, которые могут также очистить код.
Переменные
$ путь - directy сценарий был запущен из. \ имя_системы \ Sources \ Software \ WMI HotFix \
$ MSU - текущие окна udpate
$ обновление - массив имени файла пролитой '-'
$ kbart - текущее обновление KB имя
$ исправлений - возвращаемый результата при установленной проверке
$ команды - команда для установки обновления
$ пункта метров - команда плюс параметры к установке команды «\ тихо \ Norestart»
$ установки - процесс, чтобы начать установку
$ OS - Текущая версия ОС
$ папки - текущая папка под пути, содержит udpates.
kb2617858 \ win7 \ x64
kb2617858 \ win7 \ x86
Set-ExecutionPolicy RemoteSigned
function Install-MSU($path)
{
# spilt file name to get KB artical number
$update = $msu.Name -Split'-'
$kbart = $update[1]
# check if update is already installed
$HotFix = Get-HotFix -id $kbart -ea 0
# run if update is not installed
if($HotFix -eq $null)
{
Write-Host "Installing $kbart"
$command = "`"" + "$path\$msu" + "`""
$parameters = $command + " \quiet \norestart"
$install = [System.Diagnostics.Process]::Start("wusa",$parameters)
$install.WaitForExit()
}
# run if update is installed
else
{
Write-Host "Update $kbart installed"
}
}
}
# set $path to network share directory location
$path = "\\systemname\Sources\Software\HotFixes"
# set $OS to current OS
$OS = gwmi -query "select Caption, OSArchitecture from win32_OperatingSystem"
# Win7 x86 or x64
if($OS.Caption -match 'Windows 7')
{
if($OS.OSArchitecture -match '64-bit')
{
$folder = 'kb2617858\win7\x64'
$path = "$path\$folder"
Install-MSU($path)
}
else
{
$folder = "kb2617858\win7\x86"
$path = "$path\$folder"
Install-MSU($path)
}
}
else
{
}
Спасибо заранее !!
Натан, спасибо за ваш ответ. Однако при выполнении вашей пересмотренной версии я получаю следующую ошибку. Get-HotFix: не удается проверить аргумент в параметре «Id». Аргумент пустой или пустой. Поставьте аргумент t пустой или пустой, а затем повторите попытку. В C: \ Users \ username \ desktop \ deploy-kb2617858.ps1: 26 char: 29 + $ HotFix = Get-HotFix -id <<<< $ kbart -ea 0 + Категория: InvalidData: (:) [ Get-HotFix], ParameterBindingValidationException + FullyQualifiedErrorId: ПараметрArgumentValidationError, Microsoft.PowerShell.Commands.GetHotFixComman –