2017-11-28 6 views
-4

このスクリプトを使用して、なぜ動作しないのか説明できません。私はと困り抱えている 部分があれば文Powershellスクリプトは、サービスが実行中であるかどうかを確認し、停止してから再開します。

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:[email protected]” -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 
} 

私はすべてのアイデアを開いているbefour「foreachの」一部です。

+0

機能していませんか?より具体的にする必要があります。 – Raziel

+0

2番目のforeach – Shubub

+0

@Shububどのように2番目のループは機能しませんか? – gvee

答えて

0

私はpowershellの新機能ですが、ヘッダーに書いたものから、テキストファイルにあるサービスの一覧を取得するスクリプトを見て、実行しているかどうかを確認してから、20秒後にサービスを開始します。また、あなたに情報を送るいくつかの電子メール機能を追加しました。 \テスト\のservice.txt

foreachの($コンテンツ内の$アイテム){

:ここ

は、最初のビット

$コンテンツ=は、Get-コンテンツ-Path Cを行い、簡単なスクリプトです

$ GETSTATUS = GET-サービス-Name $アイテム

($ getstatus.Status -eq 'が停止'){場合

ストップサービス-Name $アイテム

スタート - スリープ-s 20

開始 - サービス-Name $アイテム }

}

関連する問題