windows - 在 Windows 服务失败时运行 Powershell 脚本。手动运行时有效,但服务失败时无效。需要建议

标签 windows powershell email

所以我一直在研究一个脚本,以便在服务失败时发送电子邮件。该脚本工作得很好,因为我已经从 PowerShell 手动运行它。我收到电子邮件,一切都已检查完毕。 然后我将其添加到服务中: Service Recovery Options

我通过链接到可执行文件告诉它运行 Powershell:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

然后执行以下脚本:

-command C:\Users\andreand\Desktop\Sendmail.ps1

如前所述,我在 PowerShell 中手动尝试了此操作,但出现错误。如果我在 -command 之前附加 PowerShell 位置,它就可以工作。像这样:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command C:\Users\andreand\Desktop\Sendmail.ps1

因此,如果我手动运行它,这会起作用,但是当服务失败时,什么也不会发生。 我通过执行 /taskkill/F/PID pid 触发失败,我可以看到服务已停止。

我错过了什么?我觉得我很亲近,这很令人沮丧!

最佳答案

正如 Mark Wragg 在这里所建议的,问题在于我用一个用户帐户加密了字符串,但试图用另一个用户帐户对其进行解密。通过不对密码使用加密,它可以工作。

我仍在尝试弄清楚是否有任何方法可以保持加密并让这项工作正常进行。

此外,我现在正尝试将失败的服务嵌入到电子邮件主题字段中,但我不确定该怎么做。我已经看到了 Get-Service Cmdlet,但它似乎获取了整个列表,我只需要它来回读失败的服务。欢迎提供任何帮助。

编辑:我现在已经找到了加密密码和检索服务列表的解决方案。 为了加密密码,我使用了加密 key 。它是这样的:

# Change this location as necessary.
PS C:\Users\andreand> $File = 'C:\SomeLocation\Key.txt'

PS C:\Users\andreand> [Byte[]] $Key = (1..16)

# The password for the mail account / SMTP client.
PS C:\Users\andreand> $Password = 'Passwordgoeshere' | ConvertTo-SecureString -AsPlainText -Force

PS C:\Users\andreand> $Password | ConvertFrom-SecureString -Key $Key | Out-File 
$File 

在此之后,我将以下内容输入到我的脚本中以检索加密 key :

$File = 'C:\SomeLocation\Key.txt'
[Byte[]] $Key = (1..16)
$Password = Get-Content $File | ConvertTo-SecureString -Key $Key

为了检索服务列表,我使用了 Get-Service cmdlet,但通过一些过滤来找到我想要的服务。像这样:

$Services = Get-Service | Where-Object {$_.DisplayName -like "ServiceName*"}

关于windows - 在 Windows 服务失败时运行 Powershell 脚本。手动运行时有效,但服务失败时无效。需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901817/

相关文章:

python - 在 python 应用程序中发送和接收电子邮件(无 IMAP 或 POP3)

c++ - 我想确定动态链接库使用了多少内存

powershell - 如何将 -Verbose 传播到模块函数?

用于查看当前登录用户(域和机器)+状态(事件、空闲、离开)的 Powershell 脚本

powershell - 如何强制 Powershell 使用新的 Azure 订阅

node.js - 在不超过速率限制的情况下尽可能快地通过 SES 发送电子邮件

java - 如何将 .jar 转换为 .exe?

windows - 在 gvim 的新选项卡中打开文件

c++ - 我的程序意外结束

javascript - 如何使用 Javascript(不使用 JQuery)进行电子邮件地址验证?