我有一个自定义的C# Restful API,其中包括Microsoft Graph Nuget包,PowerShell SDK Nuget包等。我想以某种方式在Azure中托管此应用程序,最好是App Service。C#应用程序调用powershell ExchangeOnlineManagement,在我的笔记本电脑上运行良好,因为我以管理员身份运行提升的powershell并为所有用户安装了ExchangeOnlineManagement模块。
在Azure应用服务中,我打开了Kudu控制台,但我找不到以管理员身份运行它的方法。我有一个应用注册,它被授予使用Exchange/Office和Graph的权限,我加载了一个证书。C#API作为系统管理的身份运行,并使用证书连接到Exchange和Graph。因此,我需要作为系统管理的身份运行Kudu控制台Identity,然后运行Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser。如何以托管身份运行Kudu?或者如何以管理员身份运行Kudu?
我看到一篇文章,其中有一位微软员工的回复,内容是关于使用一个applications.txt文件将软件包安装到Azure应用服务中,尽管这是针对Python的。
作为最后的手段,我可以考虑Docker/Kubernetes,或者使用Azure Function Apps来处理PowerShell的东西。
我的笔记本电脑上确实安装了ExchangeOnlineManagement,我可以将文件复制到App Service上或将其打包以从zip文件或其他文件运行吗?
C#应用程序是否可以运行Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser,因为它已经作为托管标识运行,并且在重新启动后会持续存在吗?
是否可以使用ARM模板将ExchangeOnlineManagement PowerShell Cmdlet安装到App Service中?
参考资料https://learn.microsoft.com/en-us/answers/questions/1266111/install-powershell-module-in-azure-app-service
https://learn.microsoft.com/en-us/answers/questions/1350300/how-to-update-the-powershell-version-in-azure-app的
我尝试研究以管理员身份运行Kudu Console的方法,并探索了所有菜单,但没有运气。我不知道如何以系统托管身份登录Azure Portal,并以托管身份运行Kudu Console for App Service。我还尝试研究将powershell模块安装到应用服务中的其他方法,也研究了使用应用服务之外的其他东西。
1条答案
按热度按时间6vl6ewon1#
我最终在一个应用服务中做到了这一点,将powershell模块存储在代码旁边,并将其与二进制文件一起发送。因为这是我让它工作的唯一方法,这似乎是最好的方法。
所以我做了:
字符串
上面的代码是微软最初发布的here的一个轻微的改编。