【发布时间】:2021-12-19 15:07:43
【问题描述】:
我对 Powershell 还很陌生,我被一个更大的脚本的这一部分困住了。我需要拉出所有 Windows 服务并比较它们以查看它们的启动状态类型是否已更改。如果有任何变化,我需要对它们进行计数,以便可以将该值放入电子邮件的正文中。另外,我需要附上一份 HTML 报告,显示已更改的 Windows 服务的先前和当前状态。
我所做的如下:
这段代码会生成一个 CSV 文件,显示服务的当前状态。
Get-Service | Select-Object -Property Name,DisplayName,StartType,ServiceType,Status | Export-Csv -Path "C:\logs\after.csv"
然后我声明两个变量,一个用于当前状态,另一个用于“模板”,即所有 Windows 服务所需的状态。
$before = Import-Csv -Path "C:\logs\before.csv"
$after = Import-Csv -Path "C:\logs\after.csv"
然后,我比较它们,只解析那些已更改的服务,并基于此生成 CSS 样式的 HTML 报告
Compare-Object $before $after -Property Name,DisplayName,StartType,ServiceType,Status | ConvertTo-html -Head $css | Set-Content "C:\logs\comparison.html"
这是我得到的:
它应该是这样的:
基本上,我想在原始 CSV 报告的状态列之后的新列中显示后一个 CSV 报告的状态。之后我还想计算行数,这样我就可以发送一封电子邮件报告有多少服务发生了任何变化。
任何帮助将不胜感激。
【问题讨论】:
标签: windows powershell csv service