如何在PowerShell创建的任务计划中启用「不存储密码」选项
用PowerShell创建带不存储密码。任务仅能访问本地资源选项的计划任务
直接用PowerShell的计划任务命令集就能实现你要的选项,替代原来的SCHTASKS命令,同时还能发挥PowerShell的通配符优势,完整脚本如下:
# 1. 设置任务触发器:每周一到周日17:00执行 $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday -At 17:00 # 2. 设置任务动作:启动指定程序(支持通配符,比如C:\Apps\*.exe) # 单程序直接调用exe $action = New-ScheduledTaskAction -Execute "C:\<FOLDER>\<FILE PATH FOLDER>\<PROGRAM>.exe" # 如果要利用通配符批量启动同目录下的exe,用下面的动作替换上面的行 # $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-Command 'Get-ChildItem C:\YourFolder\*.exe | ForEach-Object { Start-Process $_.FullName }'" # 3. 配置任务主体:实现*不存储密码。任务仅能访问本地资源*选项 # 用系统账户的情况,LogonType设为ServiceAccount就对应无密码本地访问 $principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount # 要是用普通用户账户,把LogonType改成S4U即可,示例: # $principal = New-ScheduledTaskPrincipal -UserID "YourDomain\YourUsername" -LogonType S4U # 4. 注册任务,`-Force`会覆盖已存在的同名任务 Register-ScheduledTask -TaskName "PROGRAM" -Action $action -Trigger $trigger -Principal $principal -Force
关键说明
- 把脚本里的路径替换成你的实际程序路径,PowerShell的通配符(比如
*)可以直接用在路径里,这是cmd的SCHTASKS做不到的 -LogonType ServiceAccount(系统账户)或S4U(普通用户)就是对应你要勾选的不存储密码。任务仅能访问本地资源选项,任务只会拥有本地资源访问权限,不会存储账户密码
内容的提问来源于stack exchange,提问作者Chuck
相关产品推荐
相关产品推荐

