PHP并执行Powershell ConfigMgr模块命令

时间:2015-04-30 15:48:18

标签: 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-host $entry.Name
}

一旦我尝试从基于PHP的网站运行脚本,就没有任何事情发生,输出数组也会变空。对我来说,似乎模块加载了问题 - 因为如果我将脚本更改为:

$all = Get-Command -Module ConfigurationManager

它将所有可用命令推送到php数组,然后返回到我的网站。

不幸的是,Get-Command不需要将执行路径切换到ConfigMgr站点,因此,我认为这是一般性问题。如果我将脚本更改为打印当前位置(get-location)的内容,它会显示PowerShell脚本的父目录,而不是我尝试更改为使用cd&#34的站点; S01:\&#34 ;

任何想出同样问题的人还是忘记了什么?

1 个答案:

答案 0 :(得分:0)

以防万一有人遇到类似的问题:利用powershells“错误偏好”强制脚本中止错误,并使用“$ _”打印errostack最后一项的错误描述(在php中你必须使用print_r作为exec函数的outstream。)

在此之后,它将给出重要提示。在我的情况下,它导致我发生了一个简单的“访问被拒绝”,因为我忘了给我的webservice运行的帐户授予适当的SCCM权限。

希望它有所帮助。