のための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();
を使用している場合しかし、私はこのロードが表示されていないので、何が起こっすべきは、パワーシェルであるウェブサーバー上でローカルに動作しますが、私はそれがプロファイルをロードする必要があり、それがある理由しかし私が見カントそれをしない。モジュラーを強制的にロードするコマンドがありますか?
まず、まず最初に、適切なロギングを取得して、なぜ、それが失敗したのかを知るようにします。第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'パラメータがあります。 –
こんにちは、申し訳ありませんがIISでのログオンを有効にしましたが、ログファイルに何も表示されません。 – DevilWAH
申し訳ありません - あなたは* Log4Netのようなライブラリを使って*あなたの*アプリケーション*にロギングメッセージを追加して、この問題と将来の問題を正確に診断できるようにする必要がありました。 IISロギングは、アプリケーションの処理ではなく、HTTP呼び出しについての情報を提供するように設計されています。 –