[英]Powershell Script started by Task Scheduler not working
所以我有一个Powershell脚本,该脚本检查是否在特定目录中创建了文件夹,然后对该文件夹进行了处理
码:
echo "$(Get-Date -Format g) - Script started" >> C:\bitlocker.log
$folder = 'C:\Path\To\Check'
$filter = '*.*'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter
$fsw.IncludeSubdirectories = $false
$fsw.NotifyFilter = [IO.NotifyFilters]'DirectoryName'
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$folderNow = $($EventArgs.FullPath)
<do stuff now>
}
手动启动此脚本可以完美运行,但无法使用“任务计划程序”运行它。
首先,我尝试直接启动脚本,这表明脚本已成功启动,但未发生任何事情-Action { ... }
被执行。
然后,我尝试制作一个启动Powershell脚本的批处理,该脚本由Task启动(如此处的建议如何从批处理文件运行PowerShell脚本 )
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""C:\PathtoScript\Script.ps1""' -Verb RunAs}"
但是问题仍然是一样的。
脚本启动(将一些输出写入文件以进行检查),但-Action { ... }
内部-Action { ... }
执行任何操作。
编辑:Task Schedular设置为以具有管理员特权的用户身份运行脚本,因为不起作用的操作需要这些操作,写入C:\\可以很好地工作
计划任务动作:
程序脚本(使用完整路径):
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
添加参数([NOT]可选):
-NoProfile -NonInteractive -ExecutionPolicy Bypass -File "C:\PathtoScript\Script.ps1" -Any 'other' -arguments 'you need' -should follow
好吧,我发现了我的错误
正如@PetSerAl所建议的那样,我忘记了FileSystemWatcher
仅在脚本的该特定过程的范围内起作用。 脚本已成功启动了作业,但是在关闭脚本进程(也就是我在其中启动脚本的窗口)后,该作业崩溃了,因为它不再引用FileSystemWatcher
。
添加一些简单的内容,例如:
Do{
$JobExist = Get-Job
} while($JobExist -ne '')
工作得很好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.