2013-03-06 2 views
0

설명서에 따르면 get-scheduledjob은 소유자가 현재 사용자 인 예약 된 작업 만 반환합니다. set-scheduledjob과 같은 다른 예약 된 작업 커맨드 릿은 소유자가 현재 사용자 인 예약 된 작업에 대해서만 작동합니다. 이로 인해 비 주인이 작업 상태를 얻거나 다른 자격 증명을 설정하는 것과 같이 작업을 수정할 수 없게됩니다.powershell 3에서 예약 된 작업을 관리하는 방법은 무엇입니까?

적절한 IT 조직에서 필자는 이러한 작업에있어 관리자가 다양한 관리자.

(소유자의 appdata에서 powershell 출력 파일을 직접 보는 것 이외에) 관리, 검토 결과 등의 방법이 없습니다.

분명히하기 위해 Powershell과 함께 작업 할 방법을 찾고 있는데 ScheduledJobs을 작성하고 관리했습니다. UI, schtask 또는 기타 예약 된 작업 관련 도구를 통해 예약 된 작업을 실행하는 예약 된 작업을 수정하면 예기치 않은 결과가 발생합니다. 소유자/자격 증명을 변경하면 예약 된 작업이 실패합니다. UI/schtasks를 사용하여 문제없이 일정을 변경할 수 있습니다. 소유자를 변경하는 것 외에도 작업 진행 상황을 모니터링하기 위해 get-job의 결과를 얻고 싶습니다.

참고 :

+0

이 기능이 필요한 경우 연결 제안을 제출하고 투표하십시오 ... https://connect.microsoft.com/PowerShell/feedback/details/780966/server-wide-scheduledjobs-should-allow- for-non-creator-owner-to-administration-those # – JorgeSandoval

답변

1

은 내가이 PowerShell을 사용하여 작동시킬 수 있었던 유일한 방법은 schtask.exe 유틸리티를 호출하여이었다 "/ U"지방 행정 및 "/ RU"을위한 원격입니다 또한 "/ S"는 로컬에서 작업 할 필요가 없습니다.

이전

[string]$string = 'schtasks.exe /create /RU yourdomain\username /RP $password /TN Task-Name /XML "D:\Path\To\ExportedXML.xml" /S ServerName' 

삭제 작업 스케줄러에서 내 보낸 XML 가져 만듭니다

[string]$string = 'schtasks.exe /delete /RU yourdomain\username /P $password /TN Task-Name /S ServerName /F' 

검색어 : 로컬

[string]$string = 'schtasks.exe /query /RU yourdomain\username /P $password' 

실행 :

Invoke-Expression -Command $string 
을 원격

실행 : 내가 예약 된 작업을 관리하기위한 몇 가지 PowerShell 스크립트를 작성했습니다

Invoke-Command -ScriptBlock {$string} 
+0

이 접근법에는 여전히 문제가 있으며 작업 스케줄러 UI와 같은 문제가 있다고 생각합니다. 이 작업의 상태는 C : \ Users \ {jobowner} \ AppData \ Local \ Microsoft \ Windows \ PowerShell \ ScheduledJobs에 있습니다. 작업을 올바르게 실행하려면이 상태가 필요합니다.UI 또는 schtasks exe를 통해 소유자를 변경하면 해당 상태로 이동하지 않으며 작업은 오류 만 발생합니다. 꽤 큰 구멍 인 것처럼 보입니다. Joe Admin은 유지 관리 작업을 생성하고 잠시 동안 실행 한 다음 종료합니다. 새 관리자는 심각한 해킹을하지 않고도 작업을 수행 할 수있는 방법이 없습니다. – JorgeSandoval

+0

다음은이 문제를 다룰 수있는 적절한 글입니다. [link] http://janegilring.wordpress.com/2012/05/ 발췌 : _ "... XML 파일을보고하지 말고 Get-Job을 사용하여 작업 결과를 검색하려면 다음을 수행하십시오. 새 PowerShell 세션을 열고 Get-Job을 실행하면 PSScheduledJob cmdlet을 사용하여 만든 예약 된 작업을 사용할 수 없으므로 먼저 PSScheduledJob 모듈을 가져온 다음 실행해야합니다. Get-Job. Receive-Job을 사용하여 작업 결과를 얻을 수 있습니다. "_ –

+0

이 내용을 읽었으며 확실한 테스트를 거쳤으나 작업을 작성한/소유 한 사용자 만 작동합니다. 중요한 비트는 작업 상태가 사용자의 appdata 폴더에 저장된다는 것을 식별하는 부분입니다. 우리는 여기에서 운이 없다고 생각하고 적어도 xml 파일에서 상태를 얻으려면 무엇인가를 써야 할 것입니다. 추한 ... "작업이 현재 사용자의 AppData-folder에있는 별도의 폴더에 저장되어있는 것을 볼 수 있습니다." – JorgeSandoval

0
+0

나는 원래의 질문에 대한 편집에서 무엇을 찾고 있는지 밝혀 냈습니다. 기본적으로 표준 스케줄 된 작업을 조작/관리하지는 않지만 ScheduledJobs는 PowerShell 3에 추가 된 환상적인 기능으로 분명히 한 명의 사용자 만 사용할 수 있습니다. – JorgeSandoval

관련 문제