2011-03-11 5 views
3

사용자 지정 PS cmdlet은 어셈블리이므로 일반 App.config 경로를 통해 구성 정보를 제공 할 수 없습니다. 사용자 지정 cmdlet에 구성 정보를 제공하는 일반적인 방법은 무엇입니까?사용자 지정 Powershell cmdlet에 구성 정보를 제공하는 일반적인 방법은 무엇입니까

+0

가능한 복제본 [PowerShell App.Config] (http://stackoverflow.com/questions/17960/powershell-app-config) – Howli

+0

이 스레드 참조 : http://stackoverflow.com/questions/17960/powershell- app-config –

+0

PowerShell cmdlet은 어셈블리 기반 일 필요는 없습니다. 순수 PowerShell에서 cmdlet을 만들 수 있습니다. –

답변

1

일반적으로 데이터 전달에 매개 변수를 사용하는 것이 좋습니다.

Get-MyData -connectionstring $connectionString -table Test ... 

즉 실제 (너무 많은 매개 변수, 등), 당신은 항상 매개 변수에 의해 구성 파일에 대한 경로를 제공 할 수 있습니다되지 않습니다 :

Get-MyData -Config .\My.config 

당신은 다음 지정된 읽을 수 있습니다 구성 파일을 cmdlet 내부에서 가져옵니다.

이렇게하면 cmdlet 사용자가 자신의 구성 파일을 정의하여 사용할 수 있습니다.

1

PowerShell은 셸입니다. 쉘의 파트간에 정보를 전달하는 일반적인 방법은 쉘 변수입니다.

$global:MyComponent_MySetting = '12' 
# i.e. 
$PSDefaultParameterValues 
$ErrorActionPreference 

설정이 프로세스 경계를 ​​넘어서 상속 될 것으로 예상되는 경우 환경 변수를 사용하는 것이 좋습니다. 이 설정을 C#/PowerShell 경계를 넘는 설정으로 확장합니다. 몇 가지 예 :

$env:PATH 
$env:PSModulePath 

.NET의 안티 패턴이라고 생각하면 재검토하고 싶을 것입니다. 이것은 PAAS 호스트 응용 프로그램의 표준이며 서버 최적화 CLR (ASP.NET v5)에서 실행되는 ASP.NET의 새로운 기본값이 될 것입니다.

https://github.com/JabbR/JabbRv2/blob/dev/src/JabbR/Startup.cs#L21
참고를 참조하십시오 작성 당시에 나는 그것을 자신을 물어 포함하여,이 질문에 몇 번을 다시 검토 한 .AddEnvironmentVariables()

에 연결하고 있습니다. PowerShell이 ​​<appSettings>과 잘 작동하지 않는다고 말하면서 지분을 마련하고 싶습니다. IMO에 비해서 PS의 셸 측면을 포용하는 것이 훨씬 낫습니다.

복잡한 구성이 필요한 경우 JSON 문자열을 사용하십시오. POSH v3 +에는 ConvertFrom-JSON이 내장되어 있습니다. 프로세스의 모든 것이 동일한 복잡한 구성을 사용하는 경우 .json 파일에 넣고 환경 변수에서 해당 파일을 가리 키십시오. 하나의 파일이 PATH 패턴처럼 잘 구축 솔루션가 충분하지 않을 경우

GIT는 해상도, 또는 ASP.NET의 Web.config 해상도를 (내가 여기 반복하지 것이다) .gitignore.

관련 문제