繁体   English   中英

从PHP调用PowerCLI脚本

[英]Call PowerCLI script from PHP

我想构建一个小的Web界面,以向我们的用户授予处理链接克隆的某些权限。 在Web服务器(运行IIS的Windows Datacenter 2008 R2)上,我已经安装了PowerCLI。 该网站在我的用户帐户(域管理员)下运行,以排除任何权限问题。

我的PHP文件如下所示:

$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 progra〜2调用consolefile,因为\\program files (x86)一直困扰着我。

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

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脚本如下所示:

Connect-VIserver -server "MyVSserver"
$VDICluster=get-cluster -Name "MyCluster"
get-vm -location  $VDICluster -name "Server*"

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

看来VMware PowerCLI安装程序未正确将其自身添加到用户/计算机环境变量中,该变量在PowerShell加载时用于填充$ Env:PSModulePath。 此处存储的路径确定PowerShell可以在哪里查找模块,还可以帮助cmdlet自动加载。

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

$Current = [Environment]::GetEnvironmentVariable('PSModulePath','Machine')
$Current += ';C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Modules'
[Environment]::SetEnvironmentVariable('PSModulePath',$Current,'Machine')

如您在此处看到的那样,它在SYSTEM级别获取PSModulePath的现有内容:

在此处输入图片说明

并将VMware PowerCLI模块路径附加到该路径,最后通过调用SetEnvironmentVariable方法对其进行设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM