我想使用 Powershell 发送警报。但我想知道除了电子邮件之外是否还有其他方法可以发送警报。
谢谢。
PS 我无法发送电子邮件,因为我没有 smtp 服务器,而且由于某些政策,我也无法安装。此外,服务器没有互联网连接。
答案1
如果您想通过本地网络发送警报 - 而不使用电子邮件服务器,我能想到的最好的方法就是网络消息 - 当然有局限性,但这应该可以满足您的要求,并且应该可以在任何 NT 客户端上运行 - 尽管您必须有一个域控制器才能真正正常工作,这样就不会出现身份验证问题。
https://gallery.technet.microsoft.com/scriptcenter/Send-NetMessage-Net-Send-0459d235- 这是由比我更聪明的人编写的脚本,它能够通过本地网络发送控制台消息,甚至不需要任何类似 SMTP 的东西。
答案2
如果您有任何可以连接的警报系统,则有很多方法可以“发送警报”。
你可以:
- 向事件日志中发送一条消息(如果它们被任何工具监视的话)(使用新事件日志)
- 跑步执行程序使另一台计算机上发生某事,例如播放声音文件或启动程序,可能需要借助近端控制模块
- 使用 Invoke-RestMethod 或 Invoke-WebRequest,如果您有一个带有警报 Web 界面的 Web 服务器,您可以调用
- 发送 SNMP 陷阱,如果您有 SNMP 陷阱侦听器
- 使用任何 .Net 框架 TCP/IP 接口发送任意网络数据包,例如发送 Syslog 消息到系统日志服务器
使用诸如网络消息之类的东西来堵塞警报系统的问题包括:自 Windows XP 时代以来它默认处于关闭状态,很可能被 Windows 防火墙/第三方端点保护阻止,如果您错过一条消息,则无法检查它所说的内容或让它再次提醒您。
如果监控很重要,你最好建立一个合理的监控系统,例如公共关系部有一个可容纳最多 100 个传感器的免费版本。
答案3
您可以使用msg
它来向用户发送消息。以下命令将向所有登录到远程 PC 的用户发送消息:
Invoke-Command -computername $computer -scriptblock { msg * "Enter message here" }
如果您只是想警告用户您正在进行维护或其他事情,这是向用户发送警报的最简单方法。