【问题标题】:Issues with creating a scheduled task that runs a powershell script with parameters创建运行带有参数的 powershell 脚本的计划任务的问题
【发布时间】:2018-11-26 17:50:53
【问题描述】:

我正在尝试将带有参数的 PowerShell 脚本作为计划任务执行。在启动程序屏幕上我有

程序/脚本

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

并在添加参数

-Command "& C:\Test\MoveFiles.ps1 -destinationRoot \\OB-VM-ME-Data\ME-Data\Archived\Test"

我做错了什么?

编辑:附件是有问题的脚本

Param (
    [Parameter(Mandatory=$true)][string]$destinationRoot
)

$path = (Get-Item -Path ".\").FullName

Get-ChildItem $path\* -Include *.bmp, *.svg | Where-Object {
    $_.LastWriteTime -lt (Get-Date).AddDays(-30)
} | ForEach-Object {
    $content = $path + "\" + $_.Name

    $year = (Get-Item $content).LastWriteTime.Year.ToString()
    $monthNumber = (Get-Item $content).LastWriteTime.Month
    $month = (Get-Culture).DateTimeFormat.GetMonthName($monthNumber)

    $destination = $destinationRoot + "\" + $year + "\" + $month 

    New-Item -ItemType Directory -Force -Path $destination

    Move-Item -Path $content -Destination $destination -Force
}

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果要执行 PowerShell 脚本(带或不带参数),请勿使用 -Command。请改用-File。把定时任务的参数列表改成这样:

    -File "C:\Test\MoveFiles.ps1" -destinationRoot "\\OB-VM-ME-Data\ME-Data\Archived\Test"
    

    编辑:

    我看不出你的脚本有什么本质上的错误。 可能证明有问题的唯一问题是它试图从当前工作目录 (Get-Item -Path ".\") 中读取文件,这可能是也可能不是您认为的那样。不过,您可以在计划任务设置中配置工作目录,以从等式中删除此变量。

    由于计划任务是出了名的难以调试,甚至不清楚实际问题是什么或导致它的原因,您最好的选择可能是遵循我在类似问题的答案中概述的 debugging steps

    【讨论】:

    • 似乎不起作用,我从命令提示符尝试过测试它,它看起来像是在处理但脚本的操作不起作用。但是,如果我从 powershell 中运行它,它会按预期工作。
    • @PhilipLoyer 然后你需要显示脚本的内容以便进一步调试(特别是参数定义)。此外,无论该用户是否登录,计划任务是否配置为作为特定用户运行?您很可能需要它,因为您的脚本似乎正在访问远程共享。话虽如此,计划任务对于debug 来说是众所周知的痛苦。 “不工作”不是一个充分的问题描述。
    • 我已经添加了相关脚本的内容
    • @PhilipLoyer 我看不出你的脚本有什么本质上的问题。请按照我之前评论中链接的答案中概述的调试步骤进行操作。特别感兴趣的是脚本在运行时的当前工作目录(是您认为的那样)以及对远程共享的访问是否实际有效。将日志记录语句添加到脚本中,以了解计划任务运行时实际发生的情况以及失败的位置。
    • 回声的想法很棒,揭示了我的问题。 $path 变量假定它仅从 C:\ 而不是 C:\Test 运行,因此它没有找到要传输的文件。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2012-09-23
    • 2013-08-18
    • 2017-11-08
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多