hax*_*ode 12 powershell foreach scheduled-tasks
我无法弄清楚为什么下面的代码不起作用:
Function createFirefoxTask() {
$schedule = new-object -com Schedule.Service
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
foreach ($task in ($tasks | select Name)) {
echo "TASK: $task.name"
if($task.equals("FirefoxMaint")) {
write-output "$task already exists"
break
}
}
}
createFirefoxTask
Run Code Online (Sandbox Code Playgroud)
我得到的输出是这样的:
FirefoxMaint
TASK: @{Name=FirefoxMaint}.name
TASK: @{Name=Task1}.name
TASK: @{Name=Task2}.name
TASK: @{Name=Task3}.name
TASK: @{Name=Task4}.name
TASK: @{Name=Task5}.name
Run Code Online (Sandbox Code Playgroud)
如果我$task.name在不通过脚本的情况下从shell 回显,它会正确显示名称.
Joc*_*ick 19
为了防止Get-ScheduledTask出现错误以防任务不存在 - 您可能需要考虑这样做:
$taskName = "FireFoxMaint"
$taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName }
if($taskExists) {
# Do whatever
} else {
# Do whatever
}
Run Code Online (Sandbox Code Playgroud)
小智 10
试试这个:
Get-ScheduledTask -TaskName "Task Name" -ErrorAction SilentlyContinue -OutVariable task
if (!$task) {
# task does not exist, otherwise $task contains the task object
}
Run Code Online (Sandbox Code Playgroud)
在双引号字符串中使用时,变量计算将在标点符号处停止。您可以使用$()来表示字符串中的子表达式,如下所示:
"TASK: $($task.name)"
Run Code Online (Sandbox Code Playgroud)
然后 PowerShell 将计算括号内的表达式并用结果扩展字符串