我在powershell中使用这两个命令来编辑两个计划任务
schtasks.exe /tn Task1 /sd 2015-01-01 /ed 2015-02-02 /rp mypassword
schtasks.exe /tn Task2 /sd 2015-04-04 /ed 2015-05-05 /rp mypassword
我想知道我是否可以使用一行命令来编辑这两个任务。 谢谢你的帮助。
答案 0 :(得分:1)
当需要更改多条信息时,将此设置为单线程更加困难。让我们尝试将一组哈希表传递给Invoke-Expression
@( @{Name = "Task1";StartDate = "2015-01-01";EndDate = "2015-02-02"},
@{Name = "Task2";StartDate = "2015-04-04";EndDate = "2015-05-05"}
) | ForEach-Object{
Invoke-Expression ("schtasks.exe /tn {0} /sd {1} /ed {2} /rp mypassword" -f $_.Name, $_.StartDate, $_.EndDate)
}
如果您的CSV文件包含Name
,StartDate
,EndDate
列,那么您可以将其直接传输到我们所在的ForEach
。那就是你不需要在代码中静态声明数组。
大多数PowerShell代码都可以写成一行。只是取决于你期望它寻找下一个人的可怕程度。
答案 1 :(得分:0)
类似脚本的方法:
# Set password
$Password = 'Passw0rd'
# This is multidimensional array, i.e. an array that contains other arrays
# Each of those sub-arrays contains commandline parameters for schtasks.exe
$Commands = @(
@('/tn', 'Task1', '/sd', '2015-01-01', '/ed', '2015-02-02', '/rp', $Password),
@('/tn', 'Task2', '/sd', '2015-04-04', '/ed', '2015-05-05', '/rp', $Password)
)
# Iterate sub-arrays, and run schtasks.exe with commandline arguments from each
$Commands | ForEach-Object {& 'schtasks.exe' $_}
一衬垫:
@('/tn', 'Task1', '/sd', '2015-01-01', '/ed', '2015-02-02', '/rp'), @('/tn', 'Task2', '/sd', '2015-04-04', '/ed', '2015-05-05', '/rp') | ForEach-Object {& 'schtasks.exe' ($_ + 'Passw0rd')}