创建运行带有参数的Powershell脚本的计划任务的问题

时间:2018-11-26 17:50:54

标签: powershell

我正在尝试将带有参数的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
}

1 个答案:

答案 0 :(得分:1)

如果要执行PowerShell脚本(带有或不带有参数),请不要使用-Command。请改用-File。将计划任务的参数列表更改为如下所示:

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

编辑:

我看不到您的脚本有任何内在的错误。唯一可能证明可能存在问题的地方是,它试图从当前工作目录(Get-Item -Path ".\")中读取文件,这可能与您想像的一样。不过,您可以在计划的任务设置中配置工作目录,以从方程式中删除此变量。

由于众所周知,排定的任务很难调试,甚至还不清楚实际问题是什么或导致问题的原因,所以最好的选择可能是遵循我在回答类似问题时所概述的debugging steps