.NETアセンブリ(私の場合は.EXE)を読み込み、app.configを使用して暗号化された接続文字列を取得するパブリックメソッドを呼び出すPowershellスクリプトがあります。Powershell App.configを使用する.NETアセンブリを呼び出す
このスクリプトは、アセンブリのexe.configをpowershell.exe.configという名前のPowershell($ pshome)フォルダに動的にコピーし、自分の開発ボックスから実行することができます。問題は、標準のWindows Server 2003インストールから実行されないことです。
exe.configがpowershellディレクトリに正しくコピーされていることを確認しました。 SysInternals Process Explorerを実行し、プロセスが設定ファイルにアクセスしていることを確認しました(ファイルが見つかりませんでした)。私は、リモートでpowershell.exeインスタンスをデバッグし、アセンブリが正常にロードされているが、ConfigurationManager.AppSettings [...]値にアクセスできないことを確認できます(nullを返します)。
私はアイデアがありません。私は別のアプリドメインを使うことができるかもしれないと読んだことがありますが、Powershellでこれを行う例はありません。
私のコードは、の効果に何かを行います
コードは、コードが動作しないWindows Server 2003で、働くVistaでは$absolute_path = "c:\foo.exe"
$config_path = $absolute_path + ".config"
copy "$config_path" "$pshome\powershell.exe.config" -Force
[Reflection.Assembly]::LoadFrom($absolute_path)
$foo = new-object MyFooAssembly.FooClass
$foo.DoSomething()
。
これは私のヒーローになります。 –
VS2008で構築されたノーディーなアセンブリで動作し、XP上で動作していることを確認しました.WS2003を手渡す必要はありませんが、そこでも動作することを願っています。幸せならテストして投票してください:) –
数日後にループから抜け出して、明日撮影します。ありがとう! – GabeA