虚拟机上的 Powershell 脚本作为计划任务

问题描述

我编写了一个简单的脚本来将文件名中包含特定子字符串的文件一个文件夹移动到另一个文件夹。

$Source = Get-ChildItem -Path "C:\source" -Filter *.xlsm                        
$Target = "C:\target"                                           

$substring = 'copy'                                     

foreach ($file in $Source) {                                    
    if($file.Name -match $substring){                           
        Move-Item -Path $file.FullName -Destination $Target -Force      
    }
        }

我想在虚拟机上自动化。当我手动运行它并在我登录 VM 时通过任务调度程序运行它时它工作正常,但是当我在任务调度程序(脚本属性)中切换到“无论登录还是注销运行”时它都不起作用。我使用以下参数运行它:

-noprofile -executionpolicy unrestricted -noninteractive -file "path to my script"

有什么想法吗?

解决方法

选择“无论用户是否登录都运行”选项时,计划任务将在不同的会话中运行。

这意味着它无权访问映射的网络驱动器!

因此,您需要在脚本中映射驱动器或使用完全限定名称(即\服务器名称\共享名称)

还有更多详情here