Thanks Jpsider,
I finally come up with below power shell Script.
Is there any short way to reach one.
$serverslist = get-content 'C:\temp\Week1.txt'
$SSOlist=$Serverlist -like "*SSO*"## To pick the SSO in server list##
$list=$Serverlist -notlike "*SSO*"## To pick the not SSO in server list##
restart-computer -computername $SSOlist -force
Sleep 180
foreach($SSO in $SSOlist)
{
FuncCheckService -ServiceName "VMwareIdentityMgmtService" -Server "$SSO"
}
function FuncCheckService
{
param($ServiceName, $Server)
$arrService = Get-Service -Name $ServiceName -ComputerName $Server
if ($arrService.Status -ne "Running")
{
$Servicestatus= $arrservice|select machinename,DisplayName,status|sort machinename
Send-MailMessage @sMail
Exit
}
else
{
$Servicestatus=$arrservice|select machinename,DisplayName,status|sort machinename
Send-MailMessage @sMail
}
}
restart-computer -computername $list -force
Sleep 180
$arrservice= Get-Service -Name vimQueryService,vpxd -ComputerName $list|select machinename,DisplayName,status|sort machinename
Send-MailMessage @sMail
$Header = @"
<style>
BODY {background-color: #a3dbe7;}
TABLE {border-width:1px; border-style:solid; border-color:black; border-collapse:collapse;}
TH, TD {border-width:1px; padding:0px; border-style:solid; border-color:black;}
</style>
<title>
Title of my Report
</title>
"@
$sMail = @{
From = "from mail id"
To = "To mail id"
Subject = "Weekly Reboot Status_"+(get-date).ToString("dd/MM/yyyy")
BodyAsHtml = $true
Body = $Servicestatus | ConvertTo-HTML -Head $Header -body "Week1"| Out-String
SmtpServer = 'Smtp servername'
}