执行内联Powershell脚本

sth*_*ell 0 powershell command inline

我正在尝试从Task Scheduler调用嵌入式Powershell脚本,以在触发特定事件时发送电子邮件。我无法在“任务计划程序”操作窗口中使用本机的“发送电子邮件”操作,因为SMTP服务器需要SSL,并且无法在操作窗口中指定此操作。因此,我希望“启动程序”并调用某些东西来发送电子邮件,但我想尽可能避免使用诸如sendEmail之类的第三方应用程序,因此希望能够调用类似于以下内容的嵌入式Powershell脚本。

将“程序/脚本”字段设置为powershell,将参数字段设置为:

-Command "{Send-MailMessage -From "Name <name@domain.com>" -To "name@domain.com" -Subject "Test Subject" -Body "Test body at $(Get-Date -Format "dd/MM/yyyy")." -SmtpServer "smtp.domain.com" -UseSSL}"

由于嵌套引号等原因,这显然不起作用,因此我一直尝试在命令提示符中使用不同的变体,但是我一生无法弄清楚我需要转义哪些字符以及如何转义它们。

任何帮助将非常感激。

小智 10

  1. 只需看一下“powershell /?”的示例部分即可。...

PowerShell -命令“ & {Get-EventLog -LogName Application}”


  1. 看看如何使用引号。

PowerShell -Command " & {Send-MailMessage -From 'Name ' -To 'name@domain.com' -Subject '测试主题' -Body ('测试正文位于 {0}.' -f (Get-Date -Format ' dd/MM/yyyy')) -SmtpServer 'smtp.domain.com' -UseSSL} "


sod*_*low 5

这应该工作:

powershell -Command 'Send-MailMessage -From "Name <name@domain.com>" -To "name@domain.com" -Subject "Test Subject" -Body "Test body at $(Get-Date -Format "dd/MM/yyyy")." -SmtpServer "smtp.domain.com" -UseSSL'
Run Code Online (Sandbox Code Playgroud)

您可以在双引号周围使用单引号,并且不需要在命令前后使用大括号。

  • 这个命令只是在控制台上打印字符串而不是执行它。 (2认同)