gpt4 book ai didi

powershell - Powershell重新启动服务(如果失败)

转载 作者:行者123 更新时间:2023-12-03 10:11:55 26 4
gpt4 key购买 nike

我有一个服务崩溃崩溃停止的问题。
这意味着状态显示为正在运行,但是...

但是-我写了一个小(绝对Beginner(!)-)Powershell脚本来检查应用程序是否崩溃了,但是我该如何继续?

如果脚本在事件日志中找到条目,则应停止并启动服务。

Clear-Host
$timetocheck = [DateTime]::Now.AddMinutes(-10)
$eventid = "10016"
$log = "System"
$app = "SID"
$check = "Get-WinEvent -LogName $log | Where-Object {($_.TimeCreated -ge $timetocheck) -and ($_.id -eq $eventid) -and ($_.Message -Like *$app*)}"

编辑

只是为了澄清-

如果此代码段在事件日志中未找到任何内容,则不会发生任何事情。

如果此代码段在事件日志中发现至少1个错误,则应停止并重新启动服务。

换句话说-如果进程崩溃重新启动,否则不执行任何操作

谢谢

最佳答案

好吧,现在我可以回答我自己的问题了。

这有效:

Clear-Host
$timetocheck = [DateTime]::Now.AddMinutes(-30)
$eventid = "10016"
$log = "System"
$app = "SID"
$checking = Get-WinEvent -FilterHashtable @{Logname="$log";ID="$eventid" ;StartTime="$timetocheck"}|`
Where-Object {$_.Message -like "*$app*"}
if ($checking -like "*") {ReStart-Service -Name DistributedCOM -Force}

技巧是 $ checking样的“*” 。我不完全满意,因为此“仅”检查Get-Winevent是否答复至少一个信号。我希望搜索我知道的字符串。

当要检查的字符串较短时,它将使用定义的字符串。

但是-它的工作。那很重要。也许其他人需要这样做。

谢谢大家

编辑
以及第一个即兴创作。

命令 Get-WinEvent -FilterHashtable @ {Logname =“$ log”; ID =“$ eventid”; StartTime =“$ timetocheck”} | Where-Object {$ _。Message -like“$ app”}
需要0.7秒

命令 Get-WinEvent $ log | Where-Object {($。TimeCreated -ge $ timetocheck)-and($ .id -eq $ eventid)-and($ _。Message -Like“$ app”)} 需要4.2秒

所以我改变了

关于powershell - Powershell重新启动服务(如果失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com