AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 539626
Accepted
Kernel Panic
Kernel Panic
Asked: 2013-09-18 09:14:53 +0800 CST2013-09-18 09:14:53 +0800 CST 2013-09-18 09:14:53 +0800 CST

Schtasks - 以下命令有什么问题

  • 772

以下脚本计划成功,但实际上不会重新启动服务器。

schtasks /create /tn "restart test" /ru "domain\admin" /rp supersecret /sc once /st 11:35 /tr "PowerShell -command {Restart-Computer -ComputerName server01 -force -wait Send-MailMessage -From [email protected] -To [email protected] -Subject 'Rebooted' -SmtpServer smtp.domain.com}"

任务计划程序事件日志显示任务已成功完成:

Task Scheduler successfully completed task "\restart test" , instance "{4a8b0e75-eb2f-4be6-918d-7b66473dd344}" , action "C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.EXE" with return code 0.

如果我只运行 中的命令{...},它将重新启动服务器并发送通知电子邮件。

我错过了什么?

编辑:我正在从带有 PowerShell 3.0 的 Windows 7 笔记本电脑到 Windows 2012 Server 执行此操作

windows-7
  • 2 2 个回答
  • 4124 Views

2 个回答

  • Voted
  1. Duncan Smart
    2013-09-18T10:38:37+08:002013-09-18T10:38:37+08:00

    看起来/tr没有正确解析命令和参数,并且似乎没有一种可靠的方法可以使用 schtasks.exe 将参数传递给命令。而是将这些PowerShell -command {...}东西放在一个批处理文件(或者可能是 *.ps1 文件)中并从任务中调用它,例如

    schtasks /create ... /tr "RestartAndSendEmail.cmd"
    
    • 2
  2. Best Answer
    Ryan Ries
    2013-09-18T10:39:35+08:002013-09-18T10:39:35+08:00

    好的,我正在删除我之前的评论,并将我的评论转移到一个答案中,因为起初我的评论只是一般性的建议,但它们变成了一个准确答案的重度澄清。

    所以我用Win7和PS3进行了测试,所以我使用的是和你一样的平台。

    首先,只需-Command { ... }从您的命令中删除,我的意思是:

    schtasks /create /tn "restart test" /ru "domain\admin" /rp supersecret /sc once /st 11:35 /tr "PowerShell Restart-Computer -ComputerName server01 -force -wait" 
    

    这样可行。但是您的下一个问题是您要执行多个命令(1 重新启动计算机并 2 发送电子邮件),为此我建议将命令放在 ps1 脚本文件中,而不是像这样执行任务:

    schtasks /create /tn "restart test" /ru "domain\admin" /rp supersecret /sc once /st 11:35 /tr "PowerShell C:\Scripts\restartAndEmail.ps1"
    

    我并不是说从技术上讲你不能在一次调用 schtasks 时运行两个 Powershell 命令,但它很笨拙,你必须开始担心需要在命令行上转义的字符,例如|字符等。 ,从几乎每个角度来看,只使用 ps1 文件就变得更容易了。

    指定脚本的完全限定路径很重要。计划任务的当前工作目录可能与脚本的路径不同,因此相对路径不会剪切它。

    事实上,当我为 Powershell 脚本制定计划任务时,我通常也会包含 Powershell exe 的完整路径,以确保这一点。我们已经在这里演示过,在这种情况下,您不必包含 Powershell.exe 的完全限定路径。

    • 2

相关问题

  • Windows 7 总是附加 VHD

  • Windows 7 上的虚拟 PC 和网络共享

  • 在 Windows XP 上安装 Windows 7 引导加载程序

  • 如何在 Windows 中自定义管道?

  • IIS 7.5 (Windows 7) - HTTP 错误 401.3 - 未经授权

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve