6

「script」という文字列に次の内容で格納されているPowershellスクリプトがあります。

get-user |  out-file C:\Users\user\Desktop\user.txt -append

私のC#コード:

RunspaceConfiguration runConfig = RunspaceConfiguration.Create();
                PSSnapInException psEx = null;
                runConfig.AddPSSnapIn("VMWare.View.Broker", out psEx);
                Runspace runspace = RunspaceFactory.CreateRunspace(runConfig);
                runspace.Open();
                Pipeline pipeline = runspace.CreatePipeline();
                pipeline.Commands.AddScript(script);
                Collection<PSObject> results = new Collection<PSObject>();
                results = pipeline.Invoke();
                runspace.Close();

コードをデバッグすると、次の例外が発生します。

No snap-ins have been registered for Windows Powershell Version 2

スクリプトを手動で実行してスナップインを追加すると、正常に機能します

4

2 に答える 2

5

このエラーメッセージは、64ビットのPowerShellインスタンスから32ビットのスナップインを読み込もうとしていることも意味します(またはその逆)。この場合、プログラムをコンパイルして正しいビット数x86をターゲットにする必要があります。AnyCPUは、デフォルトでマシンのビット数である64ビットになります。

于 2011-11-24T18:42:09.177 に答える
1

同様の問題が発生しました...コンソールアプリケーションからカスタムのPowerShellコマンドレットを実行しようとしていました。コンソールが4.0フレームワークに設定されており、PowerShellが3.0であることを確認しました。問題は、コンソールのビルドタブの「32ビットを優先する」設定がtrueに設定されていることであることが判明しました。チェックを外すとすべてがうまくいきました!

于 2013-11-11T20:28:41.987 に答える