C#.NET的IIS远程PowerShell

问题描述:

您好我已经C#.NET的IIS远程PowerShell

//set up exchange server name 
     var Exchangesrv = "ex1.iah.ac.uk"; 


     // Initialize PowerShell engine 
     var shell = PowerShell.Create(); 

     // Add the script to the PowerShell object 
     shell.Commands.AddScript("Invoke-Command -Computername hostname.example.com -ScriptBlock{get-alias}"); 

     // Execute the script 
     var results = shell.Invoke(); 


     Input.DataSource = results; 
     Input.DataBind(); 

所以很干脆我要调用一个电源外壳命令和“输入”下面的代码位是一个列表框对象我填充

但是,当我在IIS服务器上运行它不起作用,我认为这是因为IIS应用程序没有运行远程服务器上的管理员帐户我试图运行该命令。任何人都可以帮助解决这个问题吗?我怎样才能让网页用正确的凭证调用这个invoke命令?

编辑
所以我决定创建的时候打开,我现在用的帐户电源外壳的交换模块被加载,这意味着在Web服务器上的配置文件。但是,使用下面的代码

using (var powershell = PowerShell.Create()) 
     { 
      //powershell.Runspace = runspace; 


      // Add the script to the PowerShell object 
      //powershell.AddScript("Get-alias"); 
      powershell.AddScript("Get-DynamicDistributionGroup"); 


      // Execute the script 
      var results = powershell.Invoke(); 


      Input.DataSource = results; 
      Input.DataBind(); 
时,我没有看到这个加载

那么应该怎么发生的是电源外壳在本地运行的Web服务器上,但我需要它来加载配置文件,但是我看不出为什么它是不这样做。是否有命令强制它加载模块。

+0

那么,首先要做的事情 - 在那里获得正确的日志记录,以便知道*为什么*这是失败的,而不仅仅是假设。其次,如果是因为权限不足(这可能是一个问题,我同意),那么您可以[以不同的用户模仿](https://www.google.co.uk/search?q=impersonation + iis + asp.net&oq = impersonation + iis + asp.net&aqs = chrome..69i57.4032j0j7&sourceid = chrome&ie = UTF-8)。或者,'Invoke-Command'具有'-Credential'参数,也可以用于模拟。 –

+0

嗨,对不起,我已经打开IIS中的日志记录,但是在日志文件中没有看到任何关于它的信息。 – DevilWAH

+0

对不起 - 我的意思是你应该把日志消息添加到你的应用程序*,通常使用像Log4Net这样的库来确保你可以准确地诊断这个和将来的问题。 IIS日志记录旨在告诉您有关HTTP调用,而不是应用程序处理。 –

到底冒充和调用没有做的伎俩(我可以使用调用,但我不想在代码证书)

我发现我不得不改变对应用程序池的属性,然后它工作得很好。