Powershell 用Wait注册ScheduledJob

Powershell 用Wait注册ScheduledJob,powershell,wait,Powershell,Wait,我使用ssh连接到Windows服务器,并使用Register ScheduledJob命令 问题是我想在命令中添加一个“Wait”函数,然后添加一个“Unregister ScheduledJob”命令 我做了很多研究,发现我可以使用“Wait Job”命令,但我做不到 这是我的PS命令: Register-ScheduledJob -Name test-job -Trigger (New-JobTrigger -Once -At (Get-Date).AddSeconds(3)) -Scri

我使用ssh连接到Windows服务器,并使用Register ScheduledJob命令

问题是我想在命令中添加一个“Wait”函数,然后添加一个“Unregister ScheduledJob”命令

我做了很多研究,发现我可以使用“Wait Job”命令,但我做不到

这是我的PS命令:

Register-ScheduledJob -Name test-job -Trigger (New-JobTrigger -Once -At (Get-Date).AddSeconds(3)) -ScriptBlock {echo "OK" >> C:\Users\test\Desktop\test-job.txt} ; Get-Job | Wait-Job | Get-ScheduledJob | Unregister-ScheduledJob -Force
命令执行得很好,我有txt文件,但当我创建“Get job”或“Get ScheduledJob”时,我的作业仍然在列表中


有人能告诉我我做错了什么吗?

我终于找到了如何做的方法,下面是代码,如果它可以帮助一些人:

$password = ConvertTo-SecureString "MYPASSWORD" -AsPlainText -Force
$account = New-Object System.Management.Automation.PSCredential "MYDOMAIN\MYLOGIN"
$password; $opt = New-ScheduledJobOption -RunElevated
$trigger = New-JobTrigger -Once -At (Get-Date).AddSeconds(5)
Register-ScheduledJob -Name SJOB-USER -Credential $account -ScheduledJobOption $opt -Trigger $trigger `
-ScriptBlock {Start-Job -Name JOB-USER `
-ScriptBlock {COMMAND1; COMMAND2} | Wait-Job; Start-Sleep -s 15; `
$encoding=[System.Text.Encoding]::UTF8; if (COMMAND-TEST) {Send-MailMessage -SmtpServer MY-SMTP-SERVER -Encoding $encoding -From "MAIL-SENDER" -To "MAIL-USER" -Subject "..." -Body "..." -BodyAsHtml}
else {Send-MailMessage -SmtpServer MY-SMTP-SERVER -Encoding $encoding -From "MAIL-SENDER" -To "MAIL-USER" -Subject "..." -Body "..." -BodyAsHtml}; `
Get-Job | Remove-Job -Force; Get-ScheduledJob | Unregister-ScheduledJob -Force}
代码正在执行的操作:

  • 他正在使用Exchange命令启动后台作业(执行这些命令需要时间)
  • 因此,可以立即断开ssh会话,而不会中断命令的执行
  • 然后它会等待Exchange命令完成,然后向我发送一封邮件,以了解这些命令是否执行得很好
  • 邮件发送后,将删除PowerShell中的所有“作业”和“计划作业”

Get Job
Wait Job
在计划的作业上不起作用,因此您的最后一个管道基本上是空的,什么也没有发生。但是当我键入“Get Job”时,我的作业名为:test Job。所以我认为它起作用了,不是吗?