首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PHP调用PowerCLI脚本

从PHP调用PowerCLI脚本
EN

Stack Overflow用户
提问于 2017-05-09 13:02:05
回答 1查看 834关注 0票数 0

我想要建立一个小的网络界面,以授予我们的用户处理链接克隆的某些权限。在webserver (WindowsDatacenter2008Iis运行R2 )上,我已经安装了PowerCLI。该网站运行在我的用户帐户(域名管理),以排除任何权限问题。

我的PHP文件如下所示:

代码语言:javascript
复制
$PowerCliCommand="C:\\WINDOWS\\system32\\windowspowershell\\v1.0\\powershell.exe -PSConsoleFile \"C:\\Progra~2\\VMware\\Infrastructure\\vSphere PowerCLI\\vim.psc1\" -file C:\inetpub\lcmgmt\listlcs.ps1";
echo $PowerCliCommand . "<br>";
exec($PowerCliCommand, $Output, $ErrorReturned);
echo "<pre>";
print_r($Output);

print_r($ErrorReturned);
echo "</pre>";

我从\progra~2打电话来安慰我,因为\program files (x86)一直在烦我问题。

PHP在我的浏览器中的输出如下:

代码语言:javascript
复制
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile C:\Progra~2\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -file C:\inetpub\lcmgmt\listlcs.ps1
Array 
(   
    [0] => Connect-VIserver : The term 'Connect-VIserver' is not recognized as
> the name of
    [1] =>  a cmdlet, function, script file, or operable program. Check the spelling of th
    [2] => e name, or if a path was included, verify that the path is correct and try agai
    [3] => n.
    [4] => At C:\inetpub\lcmgmt\listlcs.ps1:4 char:2
    [5] => +  Connect-VIserver -server "MyVSserver"

名为PowerShell的脚本如下所示:

代码语言:javascript
复制
Connect-VIserver -server "MyVSserver"
$VDICluster=get-cluster -Name "MyCluster"
get-vm -location  $VDICluster -name "Server*"

当从When服务器上的命令提示符调用完整命令( PHP输出中的第一行)时,运行在我的帐户上(IIS中使用的相同帐户),一切正常工作,我得到链接克隆的信息。如您所见,浏览器输出报告称PowerCLI命令是未知的。我完全迷路了,有人在这方面有经验吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 15:08:57

VMware PowerCLI安装程序似乎没有将自己正确地添加到用户/机器环境变量中,这些变量用于在PowerShell加载时填充$Env:PSModulePath。存储在这里的路径决定了PowerShell可以在哪里查找模块,还可以帮助cmdlet自动加载。

若要以跨会话持续存在的方式解决此问题,可以运行以下命令:

代码语言:javascript
复制
$Current = [Environment]::GetEnvironmentVariable('PSModulePath','Machine')
$Current += ';C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Modules'
[Environment]::SetEnvironmentVariable('PSModulePath',$Current,'Machine')

在系统范围内获取PSModulePath的现有内容,如下所示:

并将VMware PowerCLI模块路径追加到它,最后通过调用SetEnvironmentVariable方法来设置它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43870588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档