.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에 빌드 된 noddy 어셈블리와 XP에서 작동하는 WS2003을 사용하지 않아도 작동한다는 것을 확인했습니다. 행복하게 테스트하고 투표하십시오 :) –
며칠 루프에서 빠져 나와 내일 촬영할 것입니다. 감사! – GabeA