在asp.net中使用Powershell.. NET应用程序部署到IIS服务器

本文关键字:部署 应用程序 IIS 服务器 NET Powershell net asp | 更新日期: 2023-09-27 17:49:14

我正在开发一个ASP测试项目。我使用System.Management.Automation来执行一些PowerShell cmdlet。有些cmdlet来自Azure Powershell模块。

当我从Visual Studio运行它时,代码工作正常。但是当我将网站发布到IIS时,一些cmdlet和这些脚本不起作用。

示例,参见前面的注释:

    var shell = PowerShell.Create();
    var script1 = "Get-AzureSubscription | Out-String"; // cant execute the cmdlet 
    var script2 = "C:''inetpub''wwwroot''App1''Scripts''test.ps1"; //Cant execute the script.
    var script3 = "Get-Date"; //Work fine
    try
    {
     shell.Commands.AddScript(script); // here insert the script.
     Collection<PSObject> results = shell.Invoke();
     //Search for errors, if some error is found redirect to an Error page.
        if (shell.Streams.Error.Count > 0)
        {
         foreach (ErrorRecord err in shell.Streams.Error)
         {
          string error = err.ToString();
          TempData["pserror"] = error;
          return RedirectToAction("Powershellerror");                
         }
        }
         else 
          if (results.Count > 0)
          {
           foreach (var psObject in results)
           {
            string result2 = psObject.ToString();
            TempData["psoutput"] = result2;
            return RedirectToAction("PowershellOutput");
           }
          }

script1和script2都给出这个错误:

术语"C:'inetpub'wwwroot'App1'Scripts'test"。Ps1 '无法识别作为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,如果包含了路径,请进行验证路径正确,请重试。

术语"Get-AzureSubscription"未被识别为Cmdlet、函数、脚本文件或可操作程序。检查拼写的名称,或者如果包含了路径,则验证该路径是否为正确,再试一次。

可能是什么??IIS设置中缺少了什么?

在asp.net中使用Powershell.. NET应用程序部署到IIS服务器

您可能需要导入Azure模块,请按照以下建议尝试:

https://stackoverflow.com/a/6267517/1183475

var ps = PowerShell.Create(myRS);
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:'...'PowerDbg.psm1")
ps.Invoke()

我没有在这台机器上安装Azure PS工具,但路径应该是:"C:'Program Files (x86)'Microsoft sdk 'Windows Azure'PowerShell'Azure'Azure 'Azure.psd1