PowerShell调用New-ScheduledTaskTrigger无法传入变量值问题求助
问题根因
Invoke-Command 执行的远程脚本块运行在目标计算机的独立会话空间中,默认无法直接读取本地会话定义的$time变量,因此脚本块内引用的$time实际为null,传给New-ScheduledTaskTrigger的-At参数时触发类型转换报错。
修复方案
方案1(推荐,适用于PowerShell 3.0及以上版本)
使用$using:修饰符直接引用本地会话变量:
# 本地提前转换为DateTime类型,避免格式解析问题 $time = [datetime]"02:40 AM" Invoke-Command -ComputerName "pc01" -ScriptBlock { $trigger = New-ScheduledTaskTrigger -Daily -At $using:time Set-ScheduledTask -Trigger $trigger -TaskName R }
方案2(兼容PowerShell 2.0旧版本)
通过-ArgumentList参数传递变量,在脚本块内显式接收:
$time = [datetime]"02:40 AM" Invoke-Command -ComputerName "pc01" -ArgumentList $time -ScriptBlock { param($passedTime) $trigger = New-ScheduledTaskTrigger -Daily -At $passedTime Set-ScheduledTask -Trigger $trigger -TaskName R }
内容的提问来源于stack exchange,提问作者Elo Bizne
相关产品推荐
相关产品推荐

