You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell创建计划任务时-Argument参数内变量无法解析如何解决

解决方案

根因

PowerShell 中单引号包裹的字符串默认不会做变量展开,只有外层用双引号包裹时,内部的$开头变量才会被自动解析为实际值。你当前代码中-Argument的参数外层用了单引号,所以$FolderName直接作为字符串传递了。

修复方法

两种常用写法都可以解决问题,优先推荐第二种可读性更高:

写法1:双引号嵌套转义

用反引号(PowerShell 官方转义字符)转义参数内部的双引号,外层用双引号包裹整个参数字符串:

# 仅需要修改$Action定义行即可
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-File `"C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1`" -name `"$FolderName`""

写法2:字符串格式化(推荐)

用-f格式化运算符拼接参数,避免多层引号嵌套的混乱,对带空格的文件夹名兼容性更好:

# 先拼接好参数字符串再传入
$taskArgument = '-File "C:\Users\Paul\Documents\RSYNC\Get-LatestAppLog.ps1" -name "{0}"' -f $FolderName
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument $taskArgument

验证方式

创建任务后打开Windows任务计划程序,找到对应任务的「属性」-「操作」选项卡,查看详情里的参数值,确认$FolderName已经被替换为实际的文件夹名称即可。


内容的提问来源于stack exchange,提问作者Paul van Schalkwyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:15:04