嘿伙计们我写了一个小的powershell脚本,它输出有关Json格式的所有计划任务的信息。这个信息我用于一个小网站。这是我的powershell脚本:
$servername = "localhost"
$schedule = new-object -com("Schedule.Service")
$schedule.connect($servername)
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks |select name, lasttaskresult, lastruntime, enabled, nextruntime | ConvertTo-Json > C:\xampp\htdocs\batch_files\test.txt
我正在使用此行运行PHP中的ps1
文件:
$output = shell_exec('powershell.exe -command C:\\xampp\\htdocs\\batch_files\\stask_query.ps1');
但这不起作用。当我从powershell控制台运行脚本时,我收到拒绝访问错误。当我在以Run as admin
开头的控制台中运行它时,它正在运行。我怎么能这样做?
我尝试将此apess服务用户添加到powershell,并拥有此行的完全权限:
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
但它没有帮助。
编辑:我注意到我不需要$servername
更新的脚本:
$schedule = new-object -com("Schedule.Service")
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks |select name, lasttaskresult, lastruntime, enabled, nextruntime | ConvertTo-Json > C:\xampp\htdocs\batch_files\test.txt
答案 0 :(得分:0)
我使用以下命令:
Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI
我添加了具有完全权限的apache服务用户。
比我需要运行:
Set-ExecutionPolicy Unrestricted
在x86 powershell中。系统在64位系统上运行,服务在32位模式下运行powershell,我只在64位模式下更改了执行策略。