windows - 使用 PowerShell 创建 Windows 计划任务时停止现有实例选项
问题描述
我正在创建一个将创建计划任务的 PowerShell 脚本。使用 Windows GUI,在设置对话框中,我可以将其设置为“停止现有实例”,如果它已经在运行,它将关闭程序。通过 XML 导出此任务时,该字段标记为:
<Settings>
<MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
</Settings>
但是,在 PowerShell 中编写此代码时,我只有IgnoreNew
,Parallel
和Queue
. 有没有办法StopInstace
通过 PowerShell 使用?
这是我的代码:
$Action = New-ScheduledTaskAction -Execute 'cmd.exe' -Argument "/c 'command'"
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionDuration (New-TimeSpan -Days (365 * 20)) -RepetitionInterval (New-TimeSpan -Minutes 33)
**$Setting = New-ScheduledTaskSettingsSet -MultipleInstances StopInstance**
Register-ScheduledTask -Action $Action -Trigger $Trigger -Setting $Setting -TaskName "Microsoft Windows > Monitoring Service" -Description "Command Runner"
解决方案
模块当前StopInstance
不支持枚举值ScheduledTasks
。
您可以直接设置 CIM 属性值:
$Action = New-ScheduledTaskAction -Execute 'cmd.exe' -Argument "/c 'ver'"
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionDuration (New-TimeSpan -Days (365 * 20)) -RepetitionInterval (New-TimeSpan -Minutes 33)
$Setting = New-ScheduledTaskSettingsSet
$Setting.CimInstanceProperties.Item('MultipleInstances').Value = 3 # 3 corresponds to 'Stop the existing instance'
Register-ScheduledTask -Action $Action -Trigger $Trigger -Setting $Setting -TaskName "Microsoft Windows > Monitoring Service" -Description "Command Runner"
推荐阅读
- javascript - 隐藏基于使用纯 JavaScript 的类的 href 元素在 Chrome 中不起作用
- javascript - RXJS - 如何订阅多次
- sql - SQL Server - 检索编码错误的数据
- java - 如何使用 Spring Boot 在 Spring Security 中动态更改 client_secret
- ios - 当 FirebaseDeepLinkAutomaticRetrievalEnabled 设置为 NO 时如何手动检索待处理的 Firebase 动态链接
- bash - 比较具有多列的 2 个文件 | 壳
- laravel - Laravel Nova 中的自引用多对多关系
- c++ - C++ 与线程并行处理向量的每个元素
- java - 为什么这段代码将值转换为双精度而不是浮点数?
- java - 我在 Ubuntu 20.04 上安装 jenkins,但无法启动