Powershell脚本检查服务是否正在运行,如果没有,则停止并再次启动它

时间:2017-11-28 11:47:12

标签: powershell email scripting

所以我有这个脚本,我无法弄清楚它为什么不起作用。 我与之合作的部分是" foreach"部分是iff句子

var start
$email = "<Email1>, Email2"
$Service = Get-Content -Path C:\temp\TextFile.txt
Get-Content C:\temp\TextFile.txt | Where-Object {$_ -match $regex} | 
ForEach-Object {
var end

function FuncCheckService
{
param($Service)
$arrService = Get-Service |           #vvvv this is where im having truble
Where { $Service -contains $_.Name} | foreach {

if ($Service.Status -eq “Running”){
}

if ($Service.Status -ne “Running”){
    Stop-Service $Service
    # Wait for 20 seconds before starting the service
    Start-Service $Service
    FuncMail -To $email -From “$env:COMPUTERNAME@mercantec.dk” -Subject 
“SERVERNAME $env:COMPUTERNAME : Services not started.” -Body “Service $regex 
started” -smtpServer “SMTP Ip here”
}
}
}

function FuncMail {
#param($strTo, $strFrom, $strSubject, $strBody, $smtpServer)
param($To, $From, $Subject, $Body, $smtpServer)
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = $From
$msg.To.Add($To)
$msg.Subject = $Subject
$msg.IsBodyHtml = 1
$msg.Body = $Body 
$smtp.Send($msg)
}
FuncCheckService $Service
}

我对任何想法持开放态度。

1 个答案:

答案 0 :(得分:0)

我自己是PowerShell的新手,但是从你放在标题上的内容看到你希望获得文本文件中的服务列表的脚本,看看它们是否正在运行,如果没有,则停止它们等待20秒然后启动该服务。您还添加了一些电子邮件功能,可以向您发送信息。

这是一个执行第一位的简单脚本

$ content = Get-Content -Path C:\ testing \ service.txt

foreach($ item in $ content){

$ getstatus = get-service -Name $ item

if($ getstatus.Status -eq&#39;停止&#39;){

stop-Service -Name $ item

Start-Sleep -s 20

start-Service -Name $ item }

}