2013-03-27 1 views
1

특정 서비스 계정에서 실행되는 몇 가지 Topshelf 서비스가 있습니다. 명령 줄에서 수동으로 서비스를 설치하면 --interactive 플래그를 사용할 수 있으며 사용자 이름과 암호를 입력 할 수있는 대화 상자가 나타납니다. Powershell 스크립트를 통해 이것을 자동화 할 수 있기를 바랍니다.Topshelf 대화 형 서비스 설치를 자동화하는 방법은 무엇입니까?

누구든지이 작업을 수행하는 방법을 알고 있습니까? (Powershell에 대해서는 특별히 신경 쓰지 않지만 설치 스크립트에서 사용자 이름과 암호를 제공하는 방법은 무엇입니까?)

Travis가 언급 했으므로 명령 줄 옵션을 살펴 보았습니다. 거의 나를 위해 일해 왔지만 지금은 하나의 도피 문제가 있습니다. 설치하려면 MyService.exe install -username : Foo -password : Bar와 같이 입력 할 수 있습니다.

그러나, 나는 사용자 이름 옵션에 대한 도메인과 사용자 이름을 모두 제공해야한다 (필자는 --interactive 경로를하기에서 이것을 알고)에 mydomain \ $ MyUserName 에다 -password : 바

을 MyService.exe이면이 -username 설치

작동하는이 방법을 찾을 수 없습니다! 미안 해요 - 제 질문이 뭔가 다른 것으로 변했고 답을 표시하고 다른 질문을 열어야 할 수도 있습니다.

답변

3

트래비스는 올바른 방향으로 나를 명령 줄 옵션과 함께 지적했다. "$"라는 접두어가 붙은 서비스 계정 사용자 이름에 문제가 하나 더있었습니다. domain \ $ myuser. 나는 "설치"명령이 그것을 받아 들일 수 있도록 그것을 탈출 할 길을 찾을 수 없었다.

비슷한 사용자 이름 "myuser"($가 없음)를 만들었습니다. 지금 이것은 잘 작동합니다 :

MyService.exe install -username:domain\myuser -password:Bar 
+0

나는 $가 문제가 될지 몰랐다. 쉘 문제인지 명령 행 파서인지 확실하지 않습니다. 조사할만한 가치가 있습니다. – Travis

+0

Travis, TopShelf 명령 줄 파서 (코드를 빠르게 살펴 본 결과)가 처리하지 못하는 것 같지만 시간은 아직 없습니다. –

+1

: 구문 대신 -username "domain \ $ myuser"를 사용하십시오. –

0

사용자 이름과 암호는 내 설정의 서비스에 대한 app.config의 구성입니다. 이것은 RunAs의 서비스 설정 블록에서 사용됩니다.

또한 Topshelf에는 command line options이 있습니다. 문서가 100 % 최신인지는 모르겠지만 시작할 수있는 좋은 곳입니다.

+0

감사합니다.하지만 제 질문은 어떻게 설치를 자동화 할 수 있습니까? 나는 당신과 똑같은 일을한다. (사용자 이름과 RunAs로 pwd를 설정한다.)하지만 특정 계정으로 서비스를 설치할 때 사용자 이름과 pwd를 입력하라는 메시지가 표시된다. –

+0

사용자 이름과 암호를 설치하는 동안 명령 줄에 지정하면 자격 증명을 묻지 않습니다. –

0

미래의 독자를 들면 다음과 같습니다 https://kristofmattei.be/2015/01/15/topshelf-install-powershell-get-credentials/

견적

시작 위의 URL에서 중요한 인용입니다 :

이 URL을 참조하십시오

So the best version is: 

$credentialsOfCurrentUser = Get-Credential -Message "Please enter your username & password for the service installs" 
$networkCredentials = $credentialsOfCurrentUser.GetNetworkCredential(); 
$username = $credentialsOfCurrentUser.UserName 
$password = $networkCredentials.Password 

Now that we have those variables we can pass them on to the install of the Topshelf exe: 


. $pathToServiceExe install -username `"$username`" -password `"$password`" --autostart 


Notice the backticks (`) to ensure the double quotes are escaped. 

끝 인용

관련 문제