我想在我的asp.net mvc web应用程序中运行PowerCLI脚本。所以我在我的应用服务器中安装了PowerCLI应用程序。然后我编写了以下测试操作方法,并在我的visual studio中运行Web应用程序,一切运行良好: -
public ActionResult About(string vCenterIp = "****", string vCenterUsername = "****", string vCenterPassword = "****")
{
var shell = PowerShell.Create();
string PsCmd = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterIp + "';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword + "';" + System.Environment.NewLine;
PsCmd = PsCmd + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin -Password $vCenterPassword;" + System.Environment.NewLine;
PsCmd = PsCmd + "Get-VMHost" + System.Environment.NewLine;
shell.Commands.AddScript(PsCmd);
var results = shell.Invoke();
if (results.Count > 0)
现在我的问题是,当我将我的Web应用程序部署到IIS时,我会运行上述操作方法吗?从我的阅读看起来似乎IIS的defualt不允许运行EXE脚本..因此,在我将应用程序部署到IIS之前,我需要采取任何限制或关注,因为我在其中运行powerCLI脚本吗?
答案 0 :(得分:0)
这是其他人尝试过你正在做的事情......
http://jeffmurr.com/blog/?p=142 ...
我喜欢最后一点......
要在服务器上运行它,托管应用程序的ApplicationPool 必须拥有管理员权限。
这实际上取决于您的组织以及您打算部署此站点的位置。对于许多企业来说,在具有管理员权限的Web服务器上运行任何东西都是完全不可接受的。
如果可以的话,我试着避免这种情况,也许有一个单独的Windows服务,它使用数据库作为媒介与网站进行通信,即网站在数据库中粘贴一个作业,Windows服务进程它安全地将结果发布到SQL Server,用户可以在另一个页面上查看结果,该页面读取所写的数据。
如果这听起来太费劲,我至少会使用这种方法......
Execute PowerShell as an administrator from C#
...创建一个以正常(简化)权限运行的网站,并暂时提升其运行powershell脚本的权限