-- We may face a scenario where we need to restart the SMS Agent host service on the client machines

-- it would be difficult to restart service on each machine one by one. This script will restart CCMEXEC on multiple machines.  

-- Create a folder C:\temp (or you can edit it as per your requirement)

-- Input the Machines to machines.txt at C:\temp

-- Save this script and run it from a Admin PS or PowerShell ISE

 -- You can see the output in C:\Temp\ServicesRestart.log and C:\temp\ExceptionError.log    

"=============================Starting execution===============================" >> C:\temp\ServicesRestart.log 
Get-Date >> C:\Temp\ServicesRestart.log  #adding the timestamp to the log files 
Get-Date >> C:\Temp\ExceptionError.log  #adding the timestamp to the log files 
"=============================Starting execution===============================" >>  C:\Temp\ExceptionError.log 
$ComputerList  = Get-content C:\temp\Machines.txt 
Write-Host  "=============================Starting execution===============================" -ForegroundColor Yellow 
Write-Host  "**************Loaded the machine list from C:\Temp\Machines.txt**************" -ForegroundColor Yellow 
foreach ($computer in $computerlist  ) 
  #loop for each machine 
# Check if the machine is online 
    if (Test-Connection -ComputerName $computer -Count 1 -Quiet) 
           #ADDING LOG 
           Write-Host  "Working on machine $computer" -ForegroundColor Yellow 
           "Working on machine $computer" >>C:\temp\ServicesRestart.log 
           Write-Host  "-Stopping the CCMEXEC service on $computer" -ForegroundColor Green 
           "-Stopping the CCMEXEC service on $computer">>C:\temp\ServicesRestart.log 
           Get-Service -ComputerName $computer -Name CCMEXEC| Stop-Service -Force 
           Write-Host  "-Starting the CCMEXEC service back on $computer" -ForegroundColor Green 
           "-Starting the CCMEXEC service back on $computer">>C:\temp\ServicesRestart.log 
           Get-Service -ComputerName $computer -Name CCMEXEC| Start-Service 
           Write-Host  "-Operation completed on  $computer" -ForegroundColor Green 
            "-Operation completed on  $computer">>C:\temp\ServicesRestart.log 
            #Catch the exception here 
            Write-host "-Exeception error on  $computer. Check logFile more details" -ForegroundColor Red 
            "-Exeception error on  $computer. Check logFile more details">>C:\temp\ServicesRestart.log 
            #Write the server name to c:\Temp\ExceptionError.log 
            " $computer has thrown asn error $($_.exception)" >> C:\Temp\ExceptionError.log 
        # offline machines 
        "$Computer is offline" >> C:\Temp\ExceptionError.log 
Write-Host  "Completed the execution.. Thank You!" -ForegroundColor Yellow 
"=============================Execution completed===============================" >> C:\temp\ServicesRestart.log 
"=============================Execution completed===============================" >> C:\temp\ExceptionError.log