鸡肋的powershell后台任务
背景:
需做一个这样小脚本:启动监控windows某个东西状态变化,用powershell启动可以,但使用cmd bat掉用无法生效。
问题 :
做个简单实验:
如下一段最简单powershell的脚本, 命名为tmp.ps1:
1 2 3 | echo "start ps1" >tmp.txt sleep 100 echo "end ps1" >>tmp.txt |
按照windows官方说法,后台任务使用Start-Job运行,官方文档见:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/start-job?view=powershell-7.3
我们打开powershell 运行 如下命令:
1 | start-job -FailPath tmp.ps1 |
再通过get-job查看,可以看到脚本已在后台运行,如下:
到这,是不是感觉后台任务稳稳后,没问题。
但问题来了, 我想通过bat脚本调用ps1来后台运行。写下面的脚本:
1 2 3 | echo "start bat" powershell - command "start-job -Failpath tmp.ps1" echo "end bat" |
从理论上看,会调用tmp.ps1后台运行,但是呢:
看起来在运行,结果我们再次打开powshell输出get-job查看,该后台任务无法找到....
再次翻阅官方法说,有这么一段话:
start-job只能适用于当前的session.也就是说不能想linux一样,真正放在后台运行。鸡肋的功能
解决方案:
那么有没有好的解决方法呢,有:那就是将脚本放在计划任务中,然后再去调用计划任务 run,步骤如下:
-->
然后在需要时,使用来调用
1 | schtasks.exe /Run /TN tmp |
参考文档:
Email:362299908@qq.com
分类:
自动化相关
, Linux & Shell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2021-01-12 自动化测试工具Gauge--套件执行步骤
2017-01-12 【转】Openstack中oslo_config模块学习