Powershell检测并启动多个服务

# 恢复Powershell的默认执行策略,默认不允许执行任何脚本
# Set-executionpolicy   default  -force
#设置Powershell的执行策略为,可以执行任何脚本
# Set-ExecutionPolicy  Unrestricted  -force

#定义一个发送邮件的函数sendEmail(收件人地址,发件人地址,邮件服务器,邮件服务器端口,邮件服务器登陆密码,邮件标题,邮件正文)
Function sendEmail([string]$to,[string]$from,[string]$smtpServer,[int]$port,[string]$password,[string]$subjet,[string]$body )
{
#生成一个.Net邮件客户端对象,参数是服务器的地址和端口
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
#使用SSL加密
$SMTPClient.EnableSsl = $true
#提供邮件客户端类使用的用户名和密码
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($from, $password)
#调用send方法发送邮件
$SMTPClient.Send($from,$to, $Subject, $Body)

}

#调用函数测试
#sendEmail "收件人Email地址" "发件人Email地址" "smtp.163.com" 25 "密码" "邮件标题" "邮件正文"

#检查服务状态的函数,如果有一个或多个服务停止则返回false,参数是服务的名字,可以指定多个名字用空格隔开
 Function checkService(){
 
         #循环检查参数传递进来的每一个服务,如果有一个服务的状态不是 "Running",则返回 "sorry",注意这里的返回值和C#的写法不同
         if ( $args | Foreach { Get-Service  -Name $_ | where Status -NE Running } ) {
            Write-Output sorry
         }
         else{
            Write-Output OK
         }
 }

#调用函数测试
#checkService XLServicePlatform Themes

#启动服务的函数,参数为需要检测并启动的服务名称,可以指定多个参数,用空格分隔
#功能为循环检查传递进来的每一个服务,如有服务的状态不是“Running”,则启动这个服务
Function startService(){
       
        $args | Foreach { Get-Service -Name $_ |where Status -NE Running | Start-Service }
}

#调用函数测试
#startService XLServicePlatform Themes

#检测服务器服务
#定义要检查的服务名称,注意不是显示名称
$service_Name= "XLServicePlatform","Themes"
$flag=0
Do
{
   
    $TorF=checkService $service_Name
    #第一次执行
    if( $TorF -eq "sorry"){
    startService $service_Name
    sendEmail "收件@qq.com" "发件@163.com" "smtp.163.com" 25 "发件邮箱密码" "服务器报警" "有一个或多服务运行不正常,我们已经尝试启动服务,如果多次收到此邮件,请马上检查你的服务器。"
    $flag=$flag+1
    }
    #检测间隔,时间单位为秒。
    sleep(10)
 
}While($flag -le 3 )  #循环退出条件

时间: 2024-12-28 01:15:07

Powershell检测并启动多个服务的相关文章

web-project 故障查看功能 检测是否启动fmd服务

def check_fmd_service(): try: output = subprocess.check_output('svcs -H -o state fmd',shell=True) state = output.decode('UTF-8').strip() if state == 'online': return True elif state == 'disabled': subprocess.call('svcadm enable fmd',shell=True) log_d

1-20 RHEL7的启动原理和服务控制

大纲: RHEL7启动原理 RHEL7服务启动配置 网络概述 发布内网服务器 ############################################################ RHEL7启动原理: BIOS自检--->MBR--->GRUB--->加载内核--->systemd的init进程--->login systemd的初始化进程 作用:加载所需的服务和用户空间工具,挂载文件系统/etc/fstab systemd是linux内核启动的第一个进程

启动SQL Server服务和数据库

在日常管理维护SQL Server的时候,我们需要注意很多地方,然后有时候做起事情来也不得章法,现在就基本的原理和常见问题的解决思路,在这跟大家分享一下.首先介绍一下SQL Server基本的运行原理.作为一个Windows服务,SQL Server的每个实例就是一个sqlserve.exe进程.这个进程启动后会读取SQL Server实例的启动配置,检测硬件,配置内存和CPU,初始化一些SQL Server系统配置,启动数据库,连接网络.然后数据库就算正常启动了,然后客户端可以正常访问了.这个

Delphi启动/停止Windows服务,启动类型修改为"自动"

unit U_StartServices; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, WinSVC, StdCtrls; type TForm1 = class(TForm) btn_StartServices: TButton; btn_StopServices: TButton; procedure btn_StartServicesCl

MongoDB服务无法启动,发生服务特定错误:100

问题:MongoDB服务无法启动,发生服务特定错误:100 原因:没有正常关闭mongod服务,导致mongod被锁 解决方案:进入db文件夹,删除mongod.lock文件,然后重新启动服务即可

SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库

5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 5.集群环境下SQL Server资源无法保持在线 目录 5.启动SQL Server服务和数据库... 1 5.1 SQL Server服务启动步骤... 1 5.1.1 从注册表中读取SQL Server启动信息... 1 5.1.2 检查硬件,配置内存和CPU.. 2 5.1.3 数据库启动.

android下使用adb启动程序或者服务

使用 adb install hello.apk可以安装一个apk但并不能启动它,启动它要使用adb shell am的方法 启动Activity: adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等). 比如 adb shell am start -n AndroidExport.com/AndroidExport.com.AndroidExportActivity

在CentOS 7中启动/停止/重启服务

RHEL/CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理.systemd兼容SysV和Linux标准组的启动脚本. Systemd是一个Linux操作系统下的系统和服务管理器.它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑. 先前的使用SysV初始化或Upstart的红帽企业版Linux版本

Oracle启动和关闭服务

Oracle需要启动和关闭的服务: 1.OracleOracle_homeTNSListener     对应于数据库的监听程序 2.OracleServiceSID                                 对应于数据库的例程 3.OracleDBConsoleSID                         对应于Oracle Enterprise Manager(OEM) 注:其中OracleOracle_home表示Oracle主目录 其中SID表示Oracl