PHP和执行Powershell ConfigMgr模块命令

PHP和执行Powershell ConfigMgr模块命令,php,powershell,Php,Powershell,我有一个PowerShell脚本,用于从ConfigMgr 2012R2集合获取所有计算机。脚本正在使用ISE和Shell: Import-Module (Join-Path (Split-Path $env:SMS_ADMIN_UI_PATH) ConfigurationManager.psd1) cd "S01:\" $all = Get-CMDevice -CollectionName "All Systems" foreach ($entry in $all) { write-h

我有一个PowerShell脚本,用于从ConfigMgr 2012R2集合获取所有计算机。脚本正在使用ISE和Shell:

Import-Module (Join-Path (Split-Path $env:SMS_ADMIN_UI_PATH) ConfigurationManager.psd1)
cd "S01:\"
$all = Get-CMDevice -CollectionName "All Systems"
foreach ($entry in $all) {
    write-host $entry.Name
}
当我尝试从基于PHP的网站运行脚本时,什么都没有发生,输出数组为空。对我来说,模块似乎没有问题,因为如果我将脚本更改为:

$all = Get-Command -Module ConfigurationManager
它将所有可用的命令推送到php数组,然后返回到我的网站

不幸的是,Get命令不需要将执行路径切换到ConfigMgr站点,因此,我认为这是一个普遍的问题。如果我将脚本更改为打印当前位置(get location)的内容,它将显示PowerShell脚本的父目录,而不是我试图使用cd“S01:\”更改为的站点


有谁发现了相同的问题或者我忘记了什么吗?

以防有人面临类似的问题:使用PowerShell“错误首选项”强制脚本在错误时终止,并使用“$”打印错误堆栈最后一项的错误描述(在php中,必须使用print_r来扩展exec函数)

接下来,它将给出重要提示。在我的例子中,它导致我出现了一个简单的“拒绝访问”,这是因为我忘记向运行Web服务的帐户授予适当的SCCM权限

希望能有帮助