$LogFile = "$ENV:TEMP\HwInventRepair.log"
# Invoke a full (resync) HWI report
$Instance = Get-CimInstance -NameSpace ROOT\ccm\InvAgt -Query "SELECT * FROM InventoryActionStatus WHERE InventoryActionID='{00000000-0000-0000-0000-000000000001}'"
Set-Content -Path $LogFile -Value $Instance
$Instance | Remove-CimInstance
Add-Content -Path $LogFile -Value "Instance removed."
Invoke-CimMethod -Namespace ROOT\ccm -ClassName SMS_Client -MethodName TriggerSchedule -Arguments @{ sScheduleID = "{00000000-0000-0000-0000-000000000001}"}
Add-Content -Path $LogFile -Value "Trigger Hardware Inventory"
Start-Sleep -Seconds 5
# Check InventoryAgent log for ignored message
$Log = "$env:SystemRoot\CCM\Logs\InventoryAgent.Log"
$LogEntries = Select-String –Path $Log –SimpleMatch "{00000000-0000-0000-0000-000000000001}" | Select -Last 1
If ($LogEntries -match "already in queue. Message ignored.")
{
# Clear the message queue
# WARNING: This restarts the SMS Agent host service
Add-Content -Path $LogFile -Value "Hardware Inventory already triggered, may be hung."
Stop-Service -Name CcmExec -Force
Add-Content -Path $LogFile -Value "CcmExec service stopped."
Remove-Item -Path C:\Windows\CCM\ServiceData\Messaging\EndpointQueues\InventoryAgent -Recurse -Force -Confirm:$false
Add-Content -Path $LogFile -Value "Inventory Agent files deleted."
Start-Service -Name CcmExec
Add-Content -Path $LogFile -Value "CcmExec service started."
# Invoke a full (resync) HWI report
Start-Sleep -Seconds 5
$Instance = Get-CimInstance -NameSpace ROOT\ccm\InvAgt -Query "SELECT * FROM InventoryActionStatus WHERE InventoryActionID='{00000000-0000-0000-0000-000000000001}'"
Add-Content -Path $LogFile -Value $Instance
$Instance | Remove-CimInstance
Add-Content -Path $LogFile -Value "Instance removed again."
Invoke-CimMethod -Namespace ROOT\ccm -ClassName SMS_Client -MethodName TriggerSchedule -Arguments @{ sScheduleID = "{00000000-0000-0000-0000-000000000001}"}
Add-Content -Path $LogFile -Value "Trigger Hardware Inventory"
No comments:
Post a Comment