2012-10-12 4 views
3

안녕하세요, 저는 클러스터 관리자에서 서비스를 중지하고 서비스를 제거하고 서비스를 다시 설치하고 클러스터 관리자에서 서비스를 시작하는 powershell 스크립트를 가지고 있습니다. NServiceBus.Host.exe는 서비스를 제거하고 다시 설치하는 데 사용됩니다. 설치 문제가 있습니다. 서비스가 성공적으로 설치되고 있지만 매개 변수로 "/ startManually"를 전송하더라도 서비스는 항상 자동 시작 유형입니다. 둘째, 설치시 사용할 서비스의 사용자 이름과 암호를 지정하더라도 userName이 로컬 시스템 이름임을 나타내는 사용자 sql 오류로 로그인에 실패했습니다. 다음은 서비스를 설치하는 코드입니다. 어떤 도움이라도 축복이 될 것입니다.Powershell에서 NServiceBusHost.exe 실행

& "NServiceBus.Host.exe" ("/install", "/startManually", "/serviceName:$ServiceName", "/displayName:$ServiceName", "/username:$ServiceUserName", "/password:$ServicePassword") > tmp.txt 
+0

우리는/start 수동 조사 중입니다 (여기서 다시보고 할 예정입니다). DB에 대한 연결에 관해서는 : 당신이 지정하는 "서비스"사용자가 프로덕션에서 테이블을 업데이트/생성 할 권한이 없을 것이므로 설치를 실행하는 사용자로 schemaupdates를 실행합니다. –

+0

게시 해 주셔서 감사합니다.이 작업은 NSErviceBus 버전 3.4에서 처리됩니다. NServiceBus GitHub에서 보류중인 문제가 있습니다. [link] (https://github.com/NServiceBus/NServiceBus/issues/700) – Shlomi

+0

그래서 두 컴퓨터에 권한이있는 사용자로 powershell 스크립트를 실행해야합니다 그것이 가리키는 데이터베이스에 대한 권한뿐 아니라 설치 권한도 있습니까? – Lizzard

답변

1

나는 일반적으로 PowerShell을에서 프로세스를 시작 Start-Process cmdlet을 사용하는 것이 좋습니다. 이로써 프로세스를 시작하는 전체 프로세스 (의도적 인 의도가 없음)로 인해 문제를 쉽게 해결할 수 있습니다.

변수에 명령 줄 인수를 빌드하고 결과 변수를 -ArgumentList 매개 변수로 전달할 수 있습니다.

$Arguments = '/install /startManually /serviceName:{0} /displayName:{0} /username:{1} /password:{2}' -f $ServiceName, $ServiceUserName, $ServicePassword) 
$nServiceBus = Resolve-Path -Path nServiceBus.Host.exe; 

Write-Host -Object ('Argument string is: {0}' -f $Arguments); 
Write-Host -Object ('Path to nServiceBus.Host.exe is: {0}' -f $nServiceBus); 
Start-Process -Wait -NoNewWindow -FilePath $nServiceBus -ArgumentList $Arguments -RedirectStandardOutput tmp.txt; 

희망이 있습니다.

관련 문제