2017-01-16 32 views
-3

我想在任务计划程序中设置“添加参数”。 因为我们有很多的Windows服务器,并且必须在每台服务器上设置添加参数。 我知道它必须管理任务调度程序“任务”的命令,但我不知道如何只添加“添加参数”。 我想知道可以做我想做的命令(第一句)。 请问我什么你想知道这个问题。谢谢。如何从Power Shell设置任务调度程序的参数

+1

任务调度管理是ServerFault切合主题的更好。这就是说,看看调度程序的[XML](https://msdn.microsoft.com/en-us/library/windows/desktop/aa383609(v = vs.85).aspx)架构。 – vonPryz

+0

请给我们一个更详细的问题描述。 Thx – Moerwald

+0

@vonPryz您可以提供[链接到服务器故障](http://serverfault.com/)。新用户不一定听说过它。 –

回答

0

学习的榜样(复制&从打开升高cmd窗口粘贴;注意^^>是我管理命令提示):

^^> schtasks /query /TN SO_31969962 /V /FO LIST | findstr /R /C:"^Task To Run:" /C:"Start In" 
Task To Run:       D:\bat\SO\31969962.bat "1 st" second 
Start In:        D:\bat\SO\files 

^^> schtasks /change /TN "\SO_31969962" /TR "D:\bat\SO\31969962.bat \"first\" second" 
SUCCESS: The parameters of scheduled task "\SO_31969962" have been changed. 

^^> schtasks /query /TN SO_31969962 /V /FO LIST | findstr /R /C:"^Task To Run:" /C:"Start In" 
Task To Run:       D:\bat\SO\31969962.bat "first" second 
Start In:        N/A 

^^> 

这里Task To Run: …线对应于

edit action

不幸的是,schtasks.exe未能在指定“开始,在”目录下,你可以看到在上面的例子(阅读this link整个线程,谷歌schtasks start in directory)。

以下PowerShell代码片断改变ArgumentsWorkingDirectory

$Task = Get-ScheduledTask -TaskPath '\' -TaskName 'SO_31969962' 
$Task.Actions[0].Arguments  = 'bubu "foo bar"' 
$Task.Actions[0].WorkingDirectory = '"D:\bat\Unusual Names"' 
Set-ScheduledTask -InputObject $Task | Out-Null 

编辑:以下评论批处理脚本显示了如何对构建一个有效的PowerShell单行命令可能的方法(无需要运行现有的.ps1脚本):

@ECHO OFF 
SETLOCAL EnableExtensions DisableDelayedExpansion 

    rem related to D:\PShell\SO\41677069_ScheduledTask_Admin.ps1 

    rem show current parameters of a task (before change) 
schtasks /query /TN "\SO_31969962" /V /FO LIST | findstr /R /C:"^Task To Run:" /C:"^Start In" 

    rem set auxiliary variables (note properly escaped inner double quotes) 
set "_taskGet=$Task = Get-ScheduledTask -TaskPath '\' -TaskName 'SO_31969962'" 
set "_taskArg=$Task.Actions[0].Arguments = '\""foo bar\"" bubu'" 
set "_taskDir=$Task.Actions[0].WorkingDirectory = '\""D:\odds and ends\""'" 
set "_taskSet=Set-ScheduledTask -InputObject $Task" 

    rem apply auxiliary variables (used merely to keep next line readable) 
PowerShell -ExecutionPolicy Bypass -command "%_taskGet%;%_taskArg%;%_taskDir%;%_taskSet%" 

    rem show current parameters of a task (after change) 
schtasks /query /TN "\SO_31969962" /V /FO LIST | findstr /R /C:"^Task To Run:" /C:"^Start In" 

结果(读取powershell /?Get-Help 'about_powershell.exe' -ShowWindow;也about_Execution_Policies)阅读:

^^> powershell -ExecutionPolicy Bypass -File "D:\PShell\SO\41677069_ScheduledTask_Admin.ps1" 

^^> D:\bat\SO\41677069_ScheduledTask_Admin.bat 
Task To Run:       D:\bat\SO\31969962.bat bubu "foo bar" 
Start In:        "D:\bat\Unusual Names" 

TaskPath          TaskName       State 
--------          --------       ----- 
\            SO_31969962      Disabled 


Task To Run:       D:\bat\SO\31969962.bat "foo bar" bubu 
Start In:        "D:\odds and ends" 

^^> 
+0

感谢您的回答! – tekun

+0

我会尝试使用power shell cuz start参数在命令提示符下不起作用。 – tekun

+0

@tekun答案更新:命令提示符/批处理脚本示例 – JosefZ

0

你需要修改的任务行动,而不是任务本身:

# Retrieve task 
$Task = Get-ScheduledTask -TaskName "myScheduledTask" 

# Retrieve action, modify argument 
$Task.Actions[0] = "new arguments string go here" 

# Update task 
Set-ScheduledTask $Task 
+0

谢谢! 也可以使用命令提示符设置任务的参数? – tekun