我正在编写一个涉及scheduledjob cmdlet的脚本,该脚本可以打开用户在特定时间想要的文件。我能够安排一个作业来运行打开.bat和.mp3的脚本块,但是我无法使用scriptblock来打开其他扩展文件(.txt,.doc,.mp4,.ps1)。就像这样:
这些命令运行良好:
register-scheduledjob -name abc -trigger $ abc -scriptblock {start“d:\ folder \ a.mp3”}
register-scheduledjob -name abc -trigger $ abc -scriptblock {start“d:\ folder \ a.bat”}
但是这些命令失败了:
register-scheduledjob -name abc -trigger $ abc -scriptblock {start“d:\ folder \ b.txt”}
register-scheduledjob -name abc -trigger $ abc -scriptblock {start“d:\ folder \ b.doc”}
register-scheduledjob -name abc -trigger $ abc -scriptblock {start notepad}
在scriptblock中,我尝试过使用invoke-item和invoke-command,但没有一个成功。然后我检查了任务管理器文件运行过程,结果发现我打开的那些文件没有打开窗口在后台运行
为什么会这样?你们有什么解决方案吗?请帮我。我花了很长时间试图解决这个问题!提前致谢
答案 0 :(得分:1)
您需要更改默认安全/运行行为,从“运行用户是否登录”更改为“仅在用户登录时运行”。您可以使用ScheduledTask命令执行此操作。请注意,Register-ScheduledJob
会在Task Schedulers\Microsoft\Windows\PowerShell\ScheduledJobs
文件夹中创建计划任务。您可以像这样进行更改:
$principal = (Get-ScheduledTask abc \Microsoft\Windows\PowerShell\ScheduledJobs\).Principal
$principal.LogonType = 'Interactive'
Set-ScheduledTask abc \Microsoft\Windows\PowerShell\ScheduledJobs\ -Principal $principal