다른 컴퓨터의 서비스 제어

다른 컴퓨터의 서비스 제어

저는 현재 Windows용 서비스를 작성 중이며 자주 이를 조정하여 테스트 컴퓨터에 업데이트하고 있습니다. 자동으로 서비스를 중지하고, exe를 업데이트하고, 서비스를 다시 시작하는 스크립트를 작성하고 싶습니다. 그러나 내가 문제를 겪고 있는 부분은 중지 및 시작 부분입니다.

내가 연결하려는 컴퓨터는 도메인에 있지 않으며 우리는 사용자 이름과 비밀번호를 공유하지 않습니다. 그러나 최선의 방법은 sc.exe \\testsvr stop "myService"도메인이 없거나 공유된 사용자 이름 및 비밀번호가 없기 때문에 "액세스가 거부되었습니다"라는 메시지가 표시되는 것입니다.

사용자를 추가하기만 하면 매우 쉽게 할 수 있지만 사용자를 변경할 수 없는 경우를 위한 학습 경험으로 활용하고 싶었습니다.

답변1

나는 살펴볼 것이다Ps서비스Microsoft의 Sysinternals(Mark Russinovich가 작성한 뛰어난 도구 세트의 일부)에서 제공됩니다.

웹사이트에서 바로:

Usage: psservice [\\computer [-u username] [-p password]] <command> <options>

의 경우 가장 일반적인 옵션으로 , 또는 를 <command>사용할 수 있습니다 . 이 스크립트의 좋은 점은 두 시스템이 동일한 도메인의 구성원이거나 다른 신뢰를 갖는 것에 의존하지 않는다는 것입니다.startstoprestart

답변2

여기에서 완전성을 기하기 위해 기본 Windows 도구만 사용하여 이 작업을 수행하려면 먼저 원격 시스템에 대한 IPC 연결을 설정하고(해당 시스템에 보안 토큰을 설정하기 위해) "SC" 명령을 사용할 수 있습니다.

net use \\remote\IPC$ /user:local-username-on-remote-machine passowrd
sc \\remote stop service-name
net use \\remote\IPC$ /delete

이렇게 하면 두 컴퓨터의 작업 그룹/도메인 멤버십 조합에 관계없이 원격 컴퓨터의 서비스를 제어할 수 있습니다.

답변3

도메인이 아닌 구성에서 개인적으로 시도한 적이 없지만 "RunAs"로 SC.exe를 실행하고 대상 컴퓨터에 대한 자격 증명을 사용할 수 있습니까?

Runas /user:TargetComputerName\TargetAccountName "sc.exe \\testsvr stop ""myService"""

답변4

DOMAIN 환경에서는 스크립트를 실행하는 로그인한 사용자에게 적절한 사용자 권한이 부여되었다고 가정하여 NET USE 명령을 사용할 수 있습니다. PowerShell은 아마도 가장 강력한 옵션일 것입니다. 그러나 이전 Microsoft 운영 체제를 실행하는 경우 일부 PowerShell 명령을 실행하는 데 몇 가지 문제가 발생할 수 있습니다. 모든 것이 Windows 2008 이상이라면 반드시 PowerShell을 사용하겠습니다.

이것이 가능하지 않다면 PSTools 패키지를 사용하여 큰 성공을 거두었습니다. Evan이 앞서 언급했듯이 이 옵션을 사용한다면 아마도 동일한 패키지에 있는 pskill 유틸리티에 익숙해져야 할 것입니다. 일부 서비스는 원격으로 작업할 때 정상적으로 종료되지 않으며, 이 작은 유틸리티는 해당 서비스를 종료하는 데 매우 좋습니다.

궁금한데, 어떤 스크립트 언어로 코딩하고 있나요? VB스크립트? 일괄? 펄?

관련 정보