我有一个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 ;
任何想出同样问题的人还是忘记了什么?
答案 0 :(得分:0)
以防万一有人遇到类似的问题:利用powershells“错误偏好”强制脚本中止错误,并使用“$ _”打印errostack最后一项的错误描述(在php中你必须使用print_r作为exec函数的outstream。)
在此之后,它将给出重要提示。在我的情况下,它导致我发生了一个简单的“访问被拒绝”,因为我忘了给我的webservice运行的帐户授予适当的SCCM权限。
希望它有所帮助。