2016-08-09 6 views
0

からPowerShellのスクリプトレットの作品を作ることができませんでした。私は、 "Test1234"アプリケーションプールが停止していることを確認しました。は、私はこれが働いたのPowerShell</p> <pre><code>Stop-WebAppPool "Test1234" </code></pre> <p>から以下のコマンドを発行して、アプリケーションプールを停止しようとしていますC#

しかし、私がtest.ps1ファイルとして作成し、それを私のC#コードから呼び出すと、それはうまくいきませんでした。

C#コード

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = @"powershell.exe"; 
startInfo.Arguments = @"& 'c:\test.ps1'"; 
startInfo.RedirectStandardOutput = true; 
startInfo.RedirectStandardError = true; 
startInfo.UseShellExecute = false; 
startInfo.CreateNoWindow = true; 
Process process = new Process(); 
process.StartInfo = startInfo; 
process.Start(); 

これは、任意のエラーをスローしませんでしたが、働いていませんでした。なぜこれが起こったのか、それをどうやって手に入れるのですか?

+0

なぜコマンドの引数は "& 'C:\ test.ps1'" 確かにそのわずか "C:\ test.ps1" – BugFinder

+0

PowerShellで発生したエラーは、プロセスレベルの例外として返されることはよくありません(スクリプトで「exit 」コマンドを明示的に使用しない限り)。あなたのtest.ps1スクリプトはエラー処理が必要で、調査するためにこれらのエラーで何かをする必要があります。この方法でスクリプトを実行するC#では、内部の可視性はありません。 –

答えて

0

C#からpowershellを起動する必要がある場合は、System.Management.Automation nugetパッケージを使用することを検討してください。 msdn docsで説明したように、このnugetパッケージは次のようにPowerShellを実行できるようになります:

using System.Management.Automation; 
// ... 
PowerShell ps = PowerShell.Create(); 
ps.AddCommand("Stop-WebAppPool"); 
ps.AddArgument("Test1234"); 
ps.Invoke(); 
関連する問題

 関連する問題