2011-07-08 6 views
0

私はC#/ ASP.Netでコード化されたWebインターフェイスを通してPowershellスクリプトを実行しようとしています。私は自分の.ps1スクリプトをそのまま残して、Process.Start(Powershell)を通して呼び出しています。Powershell via ASP.Net - "= '演算子が失敗しました:アクセスが拒否されました。

私が受け取るエラーは、「 '='演算子が失敗しました:アクセスが拒否されました」です。失敗したpowershellスクリプトの部分は "$ LC = Get-Credential"にあります - 割り当てはどこにでもあります。注:これは、IIS7 Webサーバー上の公開された.aspxを実行する場合にのみ失敗します。 Visual Studio 2010を使用してデバッグするときに正しく動作します。

ありがとうございました!

+0

Get-Credentialが実行に失敗することは明らかですか?あなたのアカウントには資格情報を取得する許可がなかったので、 – Aristos

+0

@Matt(OP、奇妙なOPと回答者は同じ名前を持っています) - コメントを追加し、回答として入力しない – manojlds

+0

アカウントに資格を取得する権限があります。それについての質問はありません。私はそれがアプリケーションプール/ Webサーバーで実行されることを確信していない... –

答えて

1

Get-Credentialは、アプリケーションプールからは機能しないポップアップを生成します。

+0

申し訳ありませんmanojlds:私はちょっとここで新しいです。 :) @Matt(レスポンダ):ポップアップを動作させる方法を知っていますか? IISを再設定するか、別の方法で呼び出すか?それ以外の場合は、ユーザーに資格情報を入力してスクリプトに渡すための回避策を知っていますか? – Matt

+0

@Matt私はあなたがそのコマンドで作業するようになるとは思わない。私はあなたがそれを回避する必要があるだろうと思う。 http://technet.microsoft.com/en-us/magazine/ff714574.aspxをご覧ください。 – Matt

0

実際には、「アクセスが拒否されました」は、プロセスを開始しようとしているIISユーザーです。確かに、資格情報を要求するホストがないため、資格情報を取得することはできませんが、資格情報をハードコードしてもプロセスを開始することはできません。

ほとんどのリモートコンテキストでは、このprivはオフになっています。

実際にプロセスを起動できるアカウントで実際にWebアプリケーションを実行させることができますが、質問の最初の段落を読むと、山が丘の外に出ているのがわかります。

C#/ ASP.Netの というWebインターフェイスでPowershellスクリプトを実行しようとしています。私は自分の.ps1スクリプトをそのまま残して、Process.Start(Powershell);を通して と呼んでいます。

が簡単に思えるこれは、それはほとんど間違いなく難しい方法(それはOSのこのあいまいな部分に向かってあなたをプッシュするために - リモート実行PRIVS)であるかもしれませんが、あなたがASPでPowerShellを実行している場合

.NETにPowerShellを埋め込むには、[PowerShell] API(See MSDN )を直接使用する必要があります。なりすましを有効にするには、this answerの指示に従ってランスペースを設定する必要があります。

希望するこれは役に立ちます

関連する問題