about_PSSession_Details

간단한 설명

PowerShell 세션 및 원격 명령에서의 역할에 대한 자세한 정보를 제공합니다.

자세한 설명

세션은 PowerShell이 실행되는 환경입니다. PowerShell을 시작할 때마다 세션이 만들어집니다. 컴퓨터 또는 다른 컴퓨터에서 "PowerShell 세션" 또는 "PSSessions"라는 추가 세션을 만들 수 있습니다.

PowerShell에서 만드는 세션과 달리 사용자가 만든 PSSessions를 제어하고 관리합니다.

PSSessions는 원격 컴퓨팅에서 중요한 역할을 합니다. 원격 컴퓨터에 연결된 PSSession을 만들 때 PowerShell은 PSSession을 지원하기 위해 원격 컴퓨터에 대한 영구 연결을 설정합니다. PSSession을 사용하여 데이터를 공유하는 일련의 명령, 함수 및 스크립트를 실행할 수 있습니다.

이 항목에서는 PowerShell의 세션 및 PSSessions에 대한 자세한 정보를 제공합니다. 세션으로 수행할 수 있는 작업에 대한 기본 정보는 about_PSSessions 참조하세요.

세션 정보

기술적으로 세션은 PowerShell이 실행되는 실행 환경입니다. 각 세션에는 System.Management.Automation 엔진의 인스턴스와 PowerShell이 실행되는 호스트 프로그램이 포함됩니다. 호스트는 친숙한 PowerShell 콘솔 또는 명령을 실행하는 다른 프로그램(예: Cmd.exe) 또는 Windows PowerShell ISE(통합 스크립팅 환경)와 같은 PowerShell을 호스트하도록 빌드된 프로그램일 수 있습니다. Windows 관점에서 세션은 대상 컴퓨터의 Windows 프로세스입니다.

각 세션은 독립적으로 구성됩니다. 여기에는 자체 속성, 자체 실행 정책 및 자체 프로필이 포함됩니다. 세션을 만들 때 존재하는 환경은 컴퓨터에서 환경을 변경하더라도 수명 동안 유지됩니다. 모든 세션은 스크립트에서 만드는 세션까지도 전역 범위에서 만들어집니다.

한 번에 하나의 명령(또는 명령 파이프라인)만 세션에서 실행할 수 있습니다. 두 번째 명령은 동기적으로(한 번에 하나씩) 첫 번째 명령이 완료될 때까지 최대 4분 동안 기다립니다. 두 번째 명령은 비동기적으로(동시에) 실행되지 않습니다.

PSSessions 정보

PowerShell을 시작할 때마다 세션이 만들어집니다. 또한 PowerShell은 개별 명령을 실행하는 임시 세션을 만듭니다. 그러나 제어하고 관리하는 세션("PowerShell 세션" 또는 "PSSessions"이라고 함)을 만들 수도 있습니다.

PSSessions는 원격 명령에 중요합니다. 또는 Enter-PSSession cmdlet의 Invoke-Command ComputerName 매개 변수를 사용하는 경우 PowerShell은 임시 세션을 설정하여 명령을 실행한 다음 명령 또는 대화형 세션이 완료되는 즉시 세션을 닫습니다.

그러나 cmdlet을 New-PSSession 사용하여 PSSession을 만드는 경우 PowerShell은 원격 컴퓨터에서 여러 명령 또는 대화형 세션을 실행할 수 있는 영구 세션을 설정합니다. 사용자가 만든 PSSessions는 삭제하거나 생성된 세션을 닫을 때까지 열려 기본 사용할 수 있습니다.

원격 컴퓨터에서 PSSession을 만들 때 시스템은 원격 컴퓨터에 PowerShell 프로세스를 만들고 로컬 컴퓨터에서 원격 컴퓨터의 프로세스로 연결을 설정합니다. 로컬 컴퓨터에서 PSSession을 만들면 새 프로세스와 연결이 모두 로컬 컴퓨터에 만들어집니다.

PSSession이 필요한 경우는 언제인가요?

Invoke-CommandEnter-PSSession cmdlet에는 ComputerName세션 매개 변수가 모두 있습니다. 원격 명령을 실행하는 데 사용할 수 있습니다.

ComputerName 매개 변수를 사용하여 하나 이상의 컴퓨터에서 단일 명령 또는 일련의 관련 없는 명령을 실행합니다.

데이터를 공유하는 명령을 실행하려면 원격 컴퓨터에 대한 영구 연결이 필요합니다. 이 경우 PSSession을 만든 다음 Session 매개 변수를 사용하여 PSSession에서 명령을 실행합니다.

같은 원격 컴퓨터Get-ProcessGet-ServiceGet-EventLog에서 데이터를 가져오는 다른 많은 cmdlet에는 Get-WmiObject ComputerName 매개 변수만 있습니다. PowerShell 원격 이외의 기술을 사용하여 원격으로 데이터를 수집합니다. 이러한 cmdlet에는 Session 매개 변수가 없지만 cmdlet을 Invoke-Command 사용하여 PSSession에서 이러한 명령을 실행할 수 있습니다.

PSSession을 만들려면 어떻게 해야 하나요?

PSSession을 만들려면 cmdlet을 New-PSSession 사용합니다. 로컬 또는 원격 컴퓨터에서 PSSession을 만드는 데 사용할 New-PSSession 수 있습니다.

모든 컴퓨터에서 PSSession을 만들 수 있나요?

원격 컴퓨터에 연결된 PSSession을 만들려면 PowerShell에서 원격으로 컴퓨터를 구성해야 합니다. 현재 사용자는 원격 컴퓨터에서 관리istrators 그룹의 멤버이거나 현재 사용자가 관리istrators 그룹의 멤버의 자격 증명을 제공할 수 있어야 합니다. 자세한 내용은 about_Remote_Requirements 참조하세요.

다른 세션에서 내 PSSessions를 볼 수 있나요?

Windows PowerShell 3.0부터 cmdlet의 Get-PSSession ComputerName 매개 변수는 지정된 원격 컴퓨터에서 만든 PSSessions를 가져옵니다.

활성 PSSessions는 원격 컴퓨터(연결의 "서버 쪽")에 기본 있으며 모든 컴퓨터의 모든 세션에서 가져올 수 있습니다.

예를 들어 Server01 컴퓨터에서 Server02 컴퓨터로 PSSession을 만든 다음 Server03 컴퓨터로 전환하는 경우 다음과 같은 명령을 사용하여 세션을 가져올 수 있습니다.

Get-PSSession -ComputerName Server02

세션에서 연결을 끊더라도 세션이 삭제되거나 시간이 초과될 때까지 원격 컴퓨터에서 세션이 기본.

Windows PowerShell 2.0에서는 현재 세션에서 만든 PSSessions만 가져올 수 있습니다. 다른 세션에서 만든 PSSessions는 가져올 수 없습니다.

자세한 내용은 Get-PSSession을 참조 하세요.

다른 사용자가 내 컴퓨터에서 만든 PSSessions를 볼 수 있나요?

PSSession을 만든 사용자의 자격 증명 또는 PSSession에서 사용하는 세션 구성에 RunAs 자격 증명이 포함된 경우에만 다른 사용자가 만든 PSSessions만 가져와서 관리할 수 있습니다. 그렇지 않으면 사용자가 만든 PSSessions만 가져와 연결, 사용 및 관리할 수 있습니다.

다른 컴퓨터에서 PSSession에 커넥트 수 있나요?

Windows PowerShell 3.0부터 Windows 컴퓨터의 PSSessions는 생성된 세션과 독립적입니다. 활성 PSSessions는 연결의 원격 또는 "서버 쪽"에 있는 컴퓨터에서 기본.

Windows 컴퓨터에서 cmdlet을 Disconnect-PSSession 사용하여 PSSession에서 연결을 끊을 수 있습니다. PSSession은 로컬 세션에서 연결이 끊어졌지만 원격 컴퓨터에서 기본. 연결이 끊긴 PSSession에서 명령이 계속 실행됩니다. PSSession을 중단하지 않고 PowerShell을 닫고 원래 컴퓨터를 종료할 수 있습니다.

그런 다음 몇 시간 후에 cmdlet을 사용하여 Get-PSSession PSSession 및 Connect-PSSession cmdlet을 사용하여 다른 Windows 컴퓨터의 새 세션에서 PSSession에 연결할 수 있습니다.

자세한 내용은 about_Remote_Disconnected_Sessions 참조하세요.

내 컴퓨터가 중지되면 내 PSSession은 어떻게 되나요?

연결이 끊긴 PSSessions는 생성된 세션과 독립적입니다. PSSession의 연결을 끊은 다음 원래 컴퓨터를 닫으면 PSSession이 원격 컴퓨터에서 기본.

또한 PowerShell은 컴퓨터 재부팅, 일시적인 정전 또는 네트워크 중단과 같이 의도치 않게 연결이 끊어진 활성 PSSessions를 복구하려고 시도합니다. PowerShell은 원래 세션을 계속 사용할 수 있는 경우 PSSession을 열려 있는 상태로 기본 또는 복구하려고 시도합니다. 그렇지 않은 경우 연결이 끊어진 상태입니다.

"활성" PSSession은 명령을 실행하는 PSSession입니다. PSSession이 연결되고(연결이 끊어지지 않음) 연결된 세션이 닫을 때 PSSession에서 명령이 실행 중인 경우 PowerShell은 원격 컴퓨터에서 PSSession을 기본 확인하려고 시도합니다. 그러나 PSSession에서 실행 중인 명령이 없는 경우 연결된 세션이 닫히면 PowerShell에서 PSSession을 닫습니다.

자세한 내용은 about_Remote_Disconnected_Sessions 참조하세요.

PSSession에서 백그라운드 작업을 실행할 수 있나요?

예. 백그라운드 작업은 현재 세션과 상호 작용하지 않고 백그라운드에서 비동기적으로 실행되는 명령입니다. 작업을 시작하는 명령을 제출하면 명령이 작업 개체를 반환하지만 작업이 완료될 때까지 백그라운드에서 계속 실행됩니다.

로컬 컴퓨터에서 백그라운드 작업을 시작하려면 이 명령을 사용합니다 Start-Job . 임시 연결(ComputerName 매개 변수 사용) 또는 PSSession(세션 매개 변수 사용)에서 백그라운드 작업을 실행할 수 있습니다.

원격 컴퓨터에서 백그라운드 작업을 시작하려면 AsJob 매개 변수와 함께 cmdlet을 사용 Invoke-Command 하거나 cmdlet을 사용하여 Invoke-Command 원격 컴퓨터에서 명령을 실행 Start-Job 합니다. AsJob 매개 변수를 사용하는 경우 ComputerName 또는 세션 매개 변수를 사용할 수 있습니다.

명령을 실행하는 Start-Job 데 사용할 Invoke-Command 경우 PSSession에서 명령을 실행해야 합니다. ComputerName 매개 변수를 사용하는 경우 PowerShell은 작업 개체가 반환되고 작업이 중단되면 연결을 종료합니다.

자세한 내용은 about_Jobs 참조하세요.

대화형 세션을 실행할 수 있나요?

예. 원격 컴퓨터에서 대화형 세션을 시작하려면 cmdlet을 Enter-PSSession 사용합니다. 대화형 세션에서 입력한 명령은 원격 컴퓨터에 직접 입력한 것처럼 원격 컴퓨터에서 실행됩니다.

임시 세션(ComputerName 매개 변수 사용) 또는 PSSession(세션 매개 변수 사용)에서 대화형 세션을 실행할 수 있습니다. PSSession을 사용하는 경우 PSSession은 이전 명령의 데이터를 유지하고 PSSession은 이후 명령에서 사용하기 위해 대화형 세션 중에 생성된 모든 데이터를 유지합니다.

대화형 세션을 종료하면 PSSession이 다시 열리고 사용할 수 기본.

자세한 내용은 Enter-PSSessionExit-PSSession을 참조하세요.

PSSessions를 삭제해야 하나요?

예. PSSession은 메모리 및 다른 리소스를 사용하지 않는 경우에도 사용하는 자체 포함 환경인 프로세스입니다. PSSession을 완료하면 삭제합니다. 여러 PSSessions를 만드는 경우 사용하지 않는 PSSessions를 닫고 현재 사용 중인 PSSessions만 기본.

PSSessions를 삭제하려면 cmdlet을 Remove-PSSession 사용합니다. PSSessions를 삭제하고 사용하던 모든 리소스를 해제합니다.

IdleTimeOut 매개 변수 New-PSSessionOption사용하여 지정한 간격 후에 유휴 PSSession을 닫을 수도 있습니다. 자세한 내용은 New-PSSessionOption을 참조하세요.

PSSession 개체를 변수에 저장한 다음 PSSession을 삭제하거나 시간 초과를 허용하면 변수에 PSSession 개체가 여전히 포함되지만 PSSession은 활성 상태가 아니고 사용하거나 복구할 수 없습니다.

모든 세션 및 PSSessions가 모두인가요?

아니요. 개발자는 선택한 공급자 및 cmdlet만 포함하는 사용자 지정 세션을 만들 수 있습니다. 명령이 한 세션에서 작동하지만 다른 세션에서는 작동하지 않는 경우 세션이 제한되었기 때문일 수 있습니다.

참고 항목