所以我有这个脚本,我无法弄清楚它为什么不起作用。 我与之合作的部分是" 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
}
我对任何想法持开放态度。
答案 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 }
}