【问题标题】:Hide or avoid the PowerShell Script return the error message隐藏或避免 PowerShell 脚本返回错误消息
【发布时间】:2021-04-15 18:52:09
【问题描述】:

我想要一个 PowerShell 脚本来检查任务调度程序。如果任务名称存在,则将其删除。

if (schtasks /query  /tn "mytask") {
    schtasks /delete /tn "mytask" /f | Out-Null
}

当用户在任务计划程序中有任务名称时,该语法效果很好。但是,当任务名称不存在时,PowerShell 会返回错误消息:

schtasks : ERROR: The system cannot find the file specified.
At line:1 char:5
+ if (schtasks /query  /tn "mytask") {
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ERROR: The syst...file specified.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

有什么办法可以避免或者隐藏PS返回的错误信息?

我是 PowerShell 的新手,感谢任何帮助!

【问题讨论】:

    标签: windows powershell taskscheduler


    【解决方案1】:

    您可以使用流redirection operator > 来抑制来自schtasks 的错误:

    if(schtasks /query  /tn "mytask" 2>$null){
        schtasks /delete /tn "mytask" /f | Out-Null
    }
    

    但我个人更喜欢使用ScheduledTasks module 中的Get-ScheduledTask,然后使用-ErrorAction 通用参数来忽略任何错误:

    if(Get-ScheduledTask -TaskName "mytask" -ErrorAction Ignore){
        Unregister-ScheduledTask -TaskName "mytask" -Confirm:$false | Out-Null
    }
    

    【讨论】:

    • 非常感谢!!我尝试了您提供的两个建议,它们都非常有效!
    猜你喜欢
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    相关资源
    最近更新 更多