2014-01-21 117 views
0

嘿家伙我写了一个小powershell脚本输出有关所有计划任务的信息Json格式。这些信息我用于一个小型网站。这是我的PowerShell脚本:运行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的控制台中运行它时,它正在工作。我怎样才能做到这一点?

我试图Apache服务的用户与该行的全部权利添加到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

我已经得到了它与下面的命令工作:

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI 

有我加入Apache服务的用户享有充分权利。

比我需要运行:

Set-ExecutionPolicy Unrestricted 

在x86的PowerShell。系统运行在64位系统上,服务在32位模式下运行powershell,我只在64位模式下更改执行策略。

相关问题