Главная

Saturday, 26 June 2021

Реанимация SCCM-агента.

Всем привет. 

Время от времени агент SCCM теряет связь с SCCM-сервером и становится не активным после долгого простоя. Иногда включения хоста в сеть бывает достаточно, но не всегда. Сегодня мы рассмотрим варианты по восстановлению работоспобности агента SCCM. Первый способ восстановить агента Configuration Manager - использовать утилиту ccmrepair.exe. Ниже я упомяну и о некоторых дополнительных методах, с помощью которых вы можете легко исправить проблемы с агентом клиента SCCM.

Вариант 1.

Если у вас есть ccmrepair, вы можете легко восстановить агент клиента sccm с помощью командной строки:

cd C:\Windows\ccm

C:\Windows\CCM>ccmrepair.exe

Repairing product {88B420C9-C484-4E20-8D02-C25243A36B80}…

Done.


Вариант 2.

Не помогло? Используем Powershell. Удалим полностью агента, выполнив скрипт с админстративными правами.

cd C:\Windows\ccmsetup

.\ccmsetup.exe /uninstall

Start-Sleep -Seconds 10

while (Get-Process -Name ccmsetup -ErrorAction SilentlyContinue) {

    Start-Sleep -Seconds 180

}

Start-Sleep -Seconds 120


if (Get-WmiObject -Query "SELECT * FROM __Namespace WHERE Name='ccm'" -Namespace root -ErrorAction SilentlyContinue) {

    Get-WmiObject -Query "SELECT * FROM __Namespace WHERE Name='ccm'" -Namespace root -ErrorAction SilentlyContinue | Remove-WmiObject

}

if (Get-WmiObject -Query "SELECT * FROM __Namespace WHERE Name='sms'" -Namespace root\cimv2 -ErrorAction SilentlyContinue) {

    Get-WmiObject -Query "SELECT * FROM __Namespace WHERE Name='sms'" -Namespace root\cimv2 -ErrorAction SilentlyContinue | Remove-WmiObject

}

if (Test-Path -Path "c:\windows\ccm") {

    rd "c:\windows\ccm"  -Recurse –Force -ErrorAction SilentlyContinue

}

if (Test-Path -Path "c:\windows\ccmsetup") {

    rd "c:\windows\ccmsetup"  -Recurse –Force -ErrorAction SilentlyContinue

}

if (Test-Path -Path "c:\windows\ccmcache") {

    rd "c:\windows\ccm"  -Recurse –Force -ErrorAction SilentlyContinue

}

if (Test-Path -Path "c:\windows\smscfg.ini") {

    rd "c:\windows\smscfg.ini" –Force -ErrorAction SilentlyContinue

}

Get-ChildItem -Path "c:\windows\sms*.mif " | foreach { $_.Delete()} 

if (Get-Item Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CCM -ErrorAction SilentlyContinue) {

    Remove-Item Registry::HKEY_LOCAL_MACHINE\software\Microsoft\ccm  –Recurse -ErrorAction SilentlyContinue

}

if (Get-Item Registry::HKEY_LOCAL_MACHINE\software\Microsoft\CCMSETUP -ErrorAction SilentlyContinue) {

    Remove-Item Registry::HKEY_LOCAL_MACHINE\software\Microsoft\CCMSETUP  –Recurse -ErrorAction SilentlyContinue

if (Get-Item Registry::HKEY_LOCAL_MACHINE\software\Microsoft\SMS -ErrorAction SilentlyContinue) {

    Remove-Item Registry::HKEY_LOCAL_MACHINE\software\Microsoft\SMS  –Recurse -ErrorAction SilentlyContinue

}

Get-ChildItem Cert:\LocalMachine\SMS\ | Remove-Item -ErrorAction SilentlyContinue


Тут же удалим старый сертификат которым был подписан SCCM-агент.

[DateTime]$Date = (Get-Date -Format 'yyyy-MM-dd')

$CompName = ($env:ComputerName).ToUpper()

$Certs = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject.ToUpper() -like "*$CompName*" -And $_.EnhancedKeyUsageList -like "*Client Authentication*" -And $_.FriendlyName -eq ""} | Sort-Object NotBefore -Descending

ForEach ($Cert in $Certs) {

If ($Cert.NotBefore -lt $Date) {

# Removing Old Certificate"

Remove-Item -Path Cert:\LocalMachine\My\$($Cert.PSChildName) -Force

}

}


После обязательно делаем перезагрузку ОС. И ставим SCCM-агента по новому

ccmsetup.exe /mp:SCCM01.forza.com SMSSITECODE = UE1 SMSMP = SCCM01.forza.com DNSSUFFIX = forza.com 

либо ждем его наката через GPO.

Вариант 3.

Еще можно упомянуть использование надстройки "Right Click Tools". Как ее использовать смотрим здесь.

Ну вот и все. Что-то из указанного должно помочь. Успехов.

No comments:

Post a Comment

А что вы думаете по этому поводу?