我正在尝试将带有参数的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
}
答案 0 :(得分:1)
如果要执行PowerShell脚本(带有或不带有参数),请不要使用-Command
。请改用-File
。将计划任务的参数列表更改为如下所示:
-File "C:\Test\MoveFiles.ps1" -destinationRoot "\\OB-VM-ME-Data\ME-Data\Archived\Test"
编辑:
我看不到您的脚本有任何内在的错误。唯一可能证明可能存在问题的地方是,它试图从当前工作目录(Get-Item -Path ".\"
)中读取文件,这可能与您想像的一样。不过,您可以在计划的任务设置中配置工作目录,以从方程式中删除此变量。
由于众所周知,排定的任务很难调试,甚至还不清楚实际问题是什么或导致问题的原因,所以最好的选择可能是遵循我在回答类似问题时所概述的debugging steps。