PowerShell创建计划任务时Argument参数转换报错如何解决
核心问题根源
你犯了PowerShell变量命名的基础错误:$args是PowerShell的系统自动保留变量,专门用于存储传递给函数/脚本/代码块的未命名参数,不允许用户自定义赋值。你强行给$args赋值后,该变量的实际类型不符合New-ScheduledTaskAction的-Argument参数要求的字符串类型,因此触发类型转换报错。
修复步骤
- 将自定义的参数变量改名,不要使用系统保留的
$args作为变量名,比如改为$exeArgs、$taskArguments都可以 - 如果你传递的参数值里包含空格(比如示例中的
my message、MyEmailSubject),需要用双引号嵌套转义,避免执行时被拆分为多个参数
修改后可用的完整代码
首先是变量定义部分:
$sendEmailCommand = "C:\Test\Test.exe" # 替换原$args为自定义变量名,带空格的参数值用双引号嵌套转义 $taskArguments = "-m smtp.gmail.com -p 587 -u myemail -p mypassword -t ""my message"" -o tls=yes -k ""MyEmailSubject"" -g recipientEmailAddr"
然后是计划任务创建部分:
$Trigger= New-ScheduledTaskTrigger -AtStartup $User= "NT AUTHORITY\SYSTEM" # 替换-Argument后的变量为你自定义的非保留名 $Action= New-ScheduledTaskAction -Execute $sendEmailCommand -Argument $taskArguments Register-ScheduledTask -TaskName "Send Restart Notification" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
内容的提问来源于stack exchange,提问作者geekygeek
相关产品推荐
相关产品推荐

