首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从web应用程序执行Powershell Azure CMDlets?

是否可以从web应用程序执行Powershell Azure CMDlets?
EN

Stack Overflow用户
提问于 2015-04-22 17:24:31
回答 1查看 3.2K关注 0票数 1

现在,当我在本地运行时,我可以从我的ASP.MVC web应用程序中执行Powershell Azure cmdlet和脚本,但是当我对Azure网站进行部署时,Powershell Azure cmdlet就不能工作了。

错误消息:

术语“Get-AzureSubscription”不被识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后再试一次。

我想它不起作用,因为"azure cmdlet“没有安装在web服务器上。

我能做什么?有什么建议吗?

我现在再次测试在Azure虚拟机的IIS8中托管的应用程序,但是当应用部署到服务器上时,我不能使用Azure Cmdlets,Azure cmdlet已经安装在虚拟机上。

当我使用Visual在VM中调试应用程序时,我可以使用cmdlet,但是部署应用程序时,cmdlet是不可识别的。

为了使用Azure cmdlet,我还需要设置一些其他的东西?

这是一个函数的示例,该函数使用结果填充下拉列表,在本地主机中,它在IIS中工作得很好。

代码语言:javascript
复制
public IEnumerable<SelectListItem> getImageFamily()
    {
        var shell = PowerShell.Create();
        shell.Commands.AddScript("C:\\inetpub\\wwwroot\\appName\Scripts\\test.ps1");
        Collection<PSObject> results = shell.Invoke();

        List<SelectListItem> items = new List<SelectListItem>();
        foreach (var psObject in results)
        {
            string image = psObject.BaseObject.ToString();
            items.Add(new SelectListItem { Text = image, Value = image });
        }
        return items;
    }

那么这就是简单的脚本

代码语言:javascript
复制
(Get-AzureVMImage).ImageFamily | sort -Unique

我也试过

代码语言:javascript
复制
Import-Module -Name "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure"

(Get-AzureVMImage).ImageFamily | sort -Unique

也试过了(我剪了一些代码.)

代码语言:javascript
复制
public IEnumerable<SelectListItem> getImageFamily()
    {
        ...
        shell.Commands.AddScript("(Get-AzureVMImage).ImageFamily | sort -Unique");
        Collection<PSObject> results = shell.Invoke();
        ...
    }
EN

回答 1

Stack Overflow用户

发布于 2015-04-22 20:05:56

要回答具体问题,不可能在Azure Web应用程序(以前的Azure网站)中这样做。

不过你还有一些选择。

  1. PowerShell cmdlet在很大程度上包装了服务管理API资源管理器API。这些都是REST,所以根据您想要做的事情,您可能只需要使用这些API,然后使用HTTP/S调用从应用程序直接调用API。我强烈建议采用这种方法,
  2. 如果您确实必须从应用程序中获取对Azure PowerShell的依赖,则可以使用角色,并使用启动任务安装Azure PowerShell cmdlet。
  3. 您可以采用IaaS方法,并在Azure虚拟机中托管您自己的IIS (或服务器场),在那里您可以完全控制计算机的配置。当然,如果采用这种方法,您也将承担维护VM的全部责任。

就我个人而言,我会尽我所能避免选择2和3,这只是不太好的设计。在某种程度上,我甚至后悔提到他们,因为你可能会遇到其他问题,试图让他们工作。但是,我想彻底回答我的问题。

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

https://stackoverflow.com/questions/29804795

复制
相关文章

相似问题

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