PowerShell脚本从命令行运行,而不是从任务计划程序运行。 为什么?

我的PowerShell脚本从命令行运行,但不能从Task_Scheduler运行 。 这是Windows Server 2008 R2 Enterprise上的PowerShell v1。

从命令行input:

c:\> powershell -File "C:\Program Files\mystuff\foo.ps1" 

我的单行PowerShell脚本运行良好 – 它复制名为* .bak的最新文件。 这是脚本,万一有用:

 gci X:\backups\*.bak | Sort-Object LastWriteTime -Descending | Select-Object -first 1 | foreach { xcopy $_ z:\backups\ } 

我使用相同的命令创build了一个计划任务。 脚本立即完成,结果代码为0,但脚本实际上没有做任何事情。

所以我试图看到我的脚本的输出,并改变我的计划行动:

 cmd /c powershell.exe -File "C:\Program Files\mystuff\foo.ps1" > c:\ps.log 

现在我看到输出:“0文件复制”

返回到命令行并再次尝试,它仍然正常工作。

计划的任务以与命令行相同的用户身份运行。 是什么使其行为有所不同?

我从使用xcopy切换到复制项目,并得到了更多的信息错误信息。 问题是Z:驱动器是映射的networking驱动器 – 并且计划的任务不能看到它。

在您的计划任务中,操作将仅为“powershell”,参数将为“。\ script.ps1”或“。\ c:\ scripts \ script.ps1”。

如果你想logging所说的PS脚本的活动,我build议你在脚本里面自己做,而不是象cmd.exe那样使用它。

哦,对不起,我误解了你的问题。 使用UNC而不是映射的驱动器。