IIS

2016-11-08 4 views
0

のためのC#.NETリモートPowerShellこんにちは、私はコードIIS

//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アプリケーションは、コマンドを実行しようとしているリモートサーバー上の管理者アカウントで実行されていないためだと思う。いずれかがこれを解決するのに役立つことができます。正しい資格情報を使ってこの呼び出しコマンドを呼び出すためにウェブページを取得するにはどうすればよいですか?

編集
だから私は、私が使用しているアカウントに、交換モジュールがロードされ、シェルの電力を開いたときに意味の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(); 

を使用している場合しかし、私はこのロードが表示されていないので、何が起こっすべきは、パワーシェルであるウェブサーバー上でローカルに動作しますが、私はそれがプロファイルをロードする必要があり、それがある理由しかし私が見カントそれをしない。モジュラーを強制的にロードするコマンドがありますか?

+0

まず、まず最初に、適切なロギングを取得して、なぜ、それが失敗したのかを知るようにします。第2に、権限が不十分である(1つの問題になる可能性が高い、同意する)場合は、[別のユーザーとして偽装する]ことができます(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呼び出しについての情報を提供するように設計されています。 –

答えて

0

最後に偽装して呼び出しは、トリックをしなかった(私は呼び出しを使用することもできましたが、私はコード内の資格情報を望まなかった)

私はその後、私はアプリケーションプールのプロパティを変更しなければならなかった発見し、それは正常に働いた。