2012-11-09 11 views
3

, 나는 다음과 같은 실행되는 PowerShell 스크립트를 가지고 실행중인 서버에서 예약 된 작업, 마지막 작업 결과 및 마지막 실행 시간 이를위한 목적은 경보에 사용할 수있는 모니터링 솔루션 (Geneos)에 데이터 세트를 반환하는 것입니다.배치 파일, 파워 쉘 스크립트, PsExec를 및 시스템 사용자 내가 자리에 Windows 작업 스케줄러에 대한 몇 가지 모니터링을 넣어려고

우리는 큰 Win2008 영역을 가지고 있기 때문에 스크립트를 중앙화하여 Geneos 프로브가 호출하고 호스트에 대한 데이터 세트를 반환 할 수있게하고 싶습니다. 로컬

\\fileserverhk\psexec.exe -accepteula -u admin -p "pwd" powershell.exe cpi \\fileserverhk\scripts\TaskSchedulerMonitor.ps1 -Destination C:\Monitor\TaskSchedulerMonitor.ps1 
\\fileserverhk\psexec.exe -accepteula -u admin -p "pwd" powershell.exe -ExecutionPolicy Bypass -File C:\Monitor\TaskSchedulerMonitor.ps1 

첫 번째 단계 복사이 .ps1 파일이 UNC 경로를 신뢰하지 PowerShell을 극복하고 두 번째 부분은 스크립트를 실행 이렇게하려면 나는 다음을 수행하는 .bat 파일에서 PowerShell을 감쌌다.

테스트 서버에서 .bat 파일을 수동으로 실행하면 관리자 계정으로 로그인 한 상태로 잘 실행됩니다. 나는 (시스템 계정으로 실행) Geneos를 통해 박쥐 파일을 불 때, 내가 얻을 :

Access is denied. 
PsExec could not start powershell.exe: 

그래서 기본적으로 내 질문에, 그것은이 시스템에서 실행 때 나는 PsExec를 사용자를 전환 얻는 방법 계정? PsExec는 다른 계정에 대한 자격 증명을 설정 했음에도 분명히 시스템에서 실행될 때 PsExec이 변경되지 못하도록하는 것입니다.

은 내가 -h 스위치를 실행하려고 읽을 수 있지만 나는 아래의 오류 얻을 :

위의 오류 외에도
The handle is invalid. 
Connecting to local system... 


Starting PsExec service on local system... 

Connecting with PsExec service on <server>... 

Starting powershell.exe on <server>... 

Error communicating with PsExec service on <server>: 

, 내가 PsExec를 끝낼과 파워 쉘 프로세스가에 걸려를 원격 기계. 흥미로운 부분은 PSExec 및 PSEXEC.SVC가 SYSTEM에서 실행되고 PowerShell이 ​​관리자 아래에서 실행되는 것을 볼 수 있기 때문에 거의 다 왔지만 뭔가 올바르지 않습니다.

+0

+1 흥미로운 질문입니다. 내가 대답 할 수 있다고 생각하지만 먼저 Geneos (이전에는 들어 보지 못했다 ...)와 같이 실행해야하지만 PowerShell 명령을 CMD와 같은 간단한 명령으로 바꾸면 네트워크를 탐색하지 않습니다. 작동하지 않으면 PSEXEC 문 바로 뒤에 * -s *를 추가하여 PSEXEC이 시스템 계정으로 실행되는지 확인하십시오. 또한, 나는 긍정적이지 않다 PSEXEC은 */* 대신에 'accepteula'앞에 * - *를 달 수있다. 두 가지 방법 모두 시도하고 싶을 수도있다. – Lizz

+0

의견에 감사드립니다. 나는 psexec을 사용하여 cmd.exe 프로세스를 스핀 업 할 수 있음을 확인할 수 있으며, 원래의 admin 계정 (** - h **을 제공 한 경우) 또는 시스템 (** - s ** 사용)을 사용하지 않고 실행할 수 있습니다. 문제. .ps1 스크립트를 로컬로 복사하는 원본 PSEXEC이 로컬로 작동한다는 것을 잊어 버렸습니다. 나는/그리고 - 모두 acceptedula를 시도해 보았습니다. 그리고 두 가지 모두 괜찮아 보입니다. 이것은 처음 실행했을 때만 적용됩니다. (원래는 psExec 프로세스에서 보았던 초기 문제를 해결했습니다.EULA가 백그라운드에서 나타나서 승인되지 않음) – Phlebass

+0

powershell remoting iso psexec을 사용하지 않은 특별한 이유가 있습니까? –

답변

1

우리는 Windows schtasks 명령 (link here)에 powershell 래퍼를 사용하여 거기에 도달 할 수있었습니다. Schtasks는 SYSTEM 계정으로 실행될 수 있으며 필요한 작업 정보를 모두 반환하므로 더 이상 사용 권한에 대해 신경 쓸 필요가 없으며 환경에 대한 일반 텍스트 암호가 더 이상 필요하지 않습니다 (보너스). PowerShell 스크립트에서

schtasks.exe Query /FO CSV 

을하고 Geneos 기대하는 CSV 스타일로 출력을 포맷하는 PS를 사용 :

우리는 포장.

+0

이 솔루션을 갖게되어 기쁩니다. 그러나 예약 된 작업을 만들고 유지 관리하면 예약 된 작업에 따라 미래에 예기치 않은 문제가 발생할 수 있습니다. 이 시점에서 내 생각은 PowerShell에서 사용되는 cred입니다 (위의 내 의견 참조). – Lizz