Cmdlet은 내부적으로 또는 Windows PowerShell백그라운드 작업작업을 수행할 수 있습니다. cmdlet이 백그라운드 작업으로 실행되면 cmdlet이 사용 중인 파이프라인 스레드와 별도로 자체 스레드에서 작업이 비동기적으로 수행됩니다. 사용자 관점에서 cmdlet이 백그라운드 작업으로 실행되면 작업이 완료되는 데 시간이 더 걸리고 작업이 실행되는 동안 사용자가 중단 없이 계속할 수 있더라도 명령 프롬프트가 즉시 반환됩니다.
백그라운드 작업, 자식 작업 및 작업 리포지토리
백그라운드 작업을 지원하는 cmdlet에서 반환되는 작업 개체는 작업을 정의합니다. (Start-Job cmdlet도 작업 개체를 반환합니다.) 작업 이름, 작업을 지정하는 데 사용되는 식별자, 상태 정보 및 자식 작업이 이 정의에 포함됩니다. 작업이 작업을 수행하지 않습니다. 각 백그라운드 작업에는 자식 작업이 실제 작업을 수행하기 때문에 하나 이상의 자식 작업이 있습니다. 작업이 백그라운드 작업으로 수행되도록 cmdlet을 실행하는 경우 cmdlet은 작업 리포지토리참조되는 공통 리포지토리에 작업 및 자식 작업을 추가해야 합니다.
명령줄에서 백그라운드 작업을 처리하는 방법에 대한 자세한 내용은 다음을 참조하세요.
백그라운드 작업으로 실행되는 Cmdlet 작성
백그라운드 작업으로 실행할 수 있는 cmdlet을 작성하려면 다음 작업을 완료해야 합니다.
사용자가 cmdlet을 백그라운드 작업으로 실행할지 여부를 결정할 수 있도록
asJob
스위치 매개 변수를 정의합니다.System.Management.Automation.Job 클래스에서 파생되는 개체를 만듭니다. 이 개체는 사용자 지정 작업 개체이거나 Windows PowerShell에서 제공하는 작업 개체(예: System.Management.Automation.PSEventJob 개체)일 수 있습니다.
레코드 처리 메서드에서 cmdlet을 백그라운드 작업으로 실행해야 하는지 여부를 감지하는
if
문을 추가합니다.사용자 지정 작업 개체의 경우 작업 클래스를 구현합니다.
cmdlet이 백그라운드 작업으로 실행되는지 여부에 따라 적절한 개체를 반환합니다.
코드 예제는 작업지원하는 방법을 참조하세요.
백그라운드 Job-Related API
백그라운드 작업을 관리하기 위해 Windows PowerShell에서 제공하는 API는 다음과 같습니다.
System.Management.Automation.Job 사용자 지정 작업 개체를 파생합니다. 추상 클래스입니다.
System.Management.Automation.JobRepository 현재 활성 백그라운드 작업에 대한 정보를 관리하고 제공합니다.
System.Management.Automation.JobState 백그라운드 작업의 상태를 정의합니다. 상태에는 Started, Running 및 Stopped가 포함됩니다.
System.Management.Automation.JobStateInfo 백그라운드 작업의 상태에 대한 정보를 제공하고, 마지막 상태 변경이 오류로 인해 발생한 경우 작업이 현재 상태로 전환된 이유를 제공합니다.
System.Management.Automation.JobStateEventArgs 백그라운드 작업 상태가 변경될 때 발생하는 이벤트에 대한 인수를 제공합니다.
Windows PowerShell 작업 Cmdlet
다음 cmdlet은 백그라운드 작업을 관리하기 위해 Windows PowerShell에서 제공합니다.
현재 세션에서 실행 중인 Windows PowerShell 백그라운드 작업을 가져옵니다.
수신 작업
현재 세션에서 Windows PowerShell 백그라운드 작업의 결과를 가져옵니다.
Windows PowerShell 백그라운드 작업을 삭제합니다.
Windows PowerShell 백그라운드 작업을 시작합니다.
Windows PowerShell 백그라운드 작업을 중지합니다.
세션에서 실행 중인 Windows PowerShell 백그라운드 작업이 하나 또는 모두 완료될 때까지 명령 프롬프트를 표시하지 않습니다.
또한 참조하십시오
PowerShell