PowerShell脚本优化:简化多服务运行状态采集重复代码
简化PowerShell服务状态采集脚本
直接用数组定义目标服务,通过循环批量处理,既减少重复代码,又保留原有CSV输出格式:
# 定义需要采集状态的服务清单 $targetServices = @("ETOS1", "ETOS1 Database", "ETOS1 Webserver") # 存储所有服务的状态结果 $outputData = @() foreach ($service in $targetServices) { # 获取服务实例,忽略不存在的服务报错 $serviceInstance = Get-Service -Name $service -ErrorAction SilentlyContinue # 转换状态为1/0:运行中为1,停止/不存在为0 $serviceStatus = if ($serviceInstance -and $serviceInstance.Status -eq 'Running') { 1 } else { 0 } # 构建符合原有CSV格式的对象,空列直接赋值空字符串 $statusRecord = [PSCustomObject]@{ "服务名称" = $service "列名1" = "" # 替换为你实际需要的空列名称 "列名2" = "" # 替换为你实际需要的空列名称 "服务状态" = $serviceStatus } $outputData += $statusRecord } # 导出到CSV文件,路径可自行修改 $outputData | Export-Csv -Path ".\ServiceStatus.csv" -NoTypeInformation -Encoding UTF8
关键说明
- 新增/修改监控服务只需要修改
$targetServices数组,无需重复编写采集逻辑 -ErrorAction SilentlyContinue避免因服务不存在抛出错误中断脚本- 自定义对象严格匹配原有CSV的列结构,空列保持为空字符串,确保输出格式一致
内容的提问来源于stack exchange,提问作者majan
相关产品推荐
相关产品推荐

