New-PSSession
로컬 또는 원격 컴퓨터에 대한 영구 연결을 만듭니다.
구문
New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]
설명
New-PSSession cmdlet은 로컬 또는 원격 컴퓨터에 Windows PowerShell 세션(PSSession)을 만듭니다. PSSession을 만드는 경우 Windows PowerShell은 원격 컴퓨터에 영구 연결을 설정합니다.
함수나 변수 값과 같은 데이터를 공유하는 여러 명령을 실행하려면 PSSession을 사용합니다. PSSession에서 명령을 실행하려면 Invoke-Command cmdlet을 사용합니다. PSSession을 사용하여 원격 컴퓨터와 직접 상호 작용하려면 Enter-PSSession cmdlet을 사용합니다. 자세한 내용은 about_PSSessions를 참조하십시오.
Enter-PSSession 또는 Invoke-Command의 ComputerName 매개 변수를 사용하여 PSSession을 만들지 않고 원격 컴퓨터에서 명령을 실행할 수 있습니다. ComputerName 매개 변수를 사용하는 경우 Windows PowerShell은 대화형 세션이나 한 명령에 사용된 다음 닫히는 임시 연결을 만듭니다.
매개 변수
-AllowRedirection
이 연결을 대체 URI(Uniform Resource Identifier)로 리디렉션할 수 있도록 합니다.
ConnectionURI 매개 변수를 사용하는 경우 원격 대상은 다른 URI로 리디렉션하라는 지침을 반환할 수 있습니다. 기본적으로 Windows PowerShell은 연결을 리디렉션하지 않지만 AllowRedirection 매개 변수를 사용하여 Windows PowerShell이 연결을 리디렉션하도록 허용할 수 있습니다.
$PSSessionOption 기본 설정 변수의 MaximumConnectionRedirectionCount 속성 또는 SessionOption 매개 변수 값의 MaximumConnectionRedirectionCount 속성을 설정하여 연결이 리디렉션되는 횟수를 제한할 수도 있습니다.
기본값은 5입니다. 자세한 내용은 SessionOption 매개 변수 설명과 New-PSSessionOption을 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ApplicationName <string>
연결 URI의 응용 프로그램 이름 세그먼트를 지정합니다. 이 매개 변수를 사용하여 명령에 ConnectionURI 매개 변수를 사용하지 않는 경우 응용 프로그램 이름을 지정할 수 있습니다.
기본값은 로컬 컴퓨터의 $PSSessionApplicationName 기본 설정 변수의 값입니다. 이 기본 설정 변수를 정의하지 않으면 "WSMAN"이 기본값으로 사용됩니다. 대부분의 경우 이 값을 사용하면 됩니다. 자세한 내용은 about_Preference_Variables를 참조하십시오.
WinRM 서비스는 응용 프로그램 이름을 사용하여 연결 요청을 서비스하는 수신기를 선택합니다. 이 매개 변수 값은 원격 컴퓨터에 있는 수신기의 URLPrefix 속성 값과 일치해야 합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
WSMAN |
파이프라인 입력 적용 여부 |
true (ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-Authentication <AuthenticationMechanism>
사용자 자격 증명을 인증하는 데 사용되는 메커니즘을 지정합니다. 유효한 값은 "Default", "Basic", "Credssp", "Digest", "Kerberos", "Negotiate" 및 "NegotiateWithImplicitCredential"입니다. 기본값은 "Default"입니다.
CredSSP 인증은 Windows Vista 및 Windows Server 2008 이상에서만 사용할 수 있습니다.
이 매개 변수 값에 대한 자세한 내용은 MSDN(Microsoft Developer Network) 라이브러리의 System.Management.Automation.Runspaces.AuthenticationMechanism 열거형에 대한 설명(https://go.microsoft.com/fwlink/?LinkID=144382)을 참조하십시오.
주의: 사용자의 자격 증명이 인증을 위해 원격 컴퓨터로 전달되는 CredSSP(자격 증명 보안 서비스 공급자) 인증은 원격 네트워크 공유에 액세스하는 것처럼 둘 이상의 리소스에서 인증이 필요한 명령을 위한 것입니다. 이렇게 하면 원격 작업의 보안 위험이 높아집니다. 원격 컴퓨터가 손상된 경우 이 컴퓨터로 전달된 자격 증명을 사용하여 네트워크 세션을 제어할 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
Default |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-CertificateThumbprint <string>
이 작업을 수행할 권한이 있는 사용자 계정의 디지털 공개 키 인증서(X509)를 지정합니다. 인증서의 인증서 손 도장(Thumbprint)을 입력합니다.
인증서는 클라이언트 인증서 기반 인증에 사용됩니다. 인증서는 로컬 사용자 계정으로만 매핑될 수 있고 도메인 계정에는 사용할 수 없습니다.
인증서 손 도장(Thumbprint)을 가져오려면 Windows PowerShell Cert: 드라이브에서 Get-Item 또는 Get-ChildItem 명령을 사용합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ComputerName <string[]>
지정된 컴퓨터에 대한 영구 연결(PSSession)을 만듭니다. 여러 컴퓨터 이름을 입력하는 경우 New-PSSession은 컴퓨터당 하나씩 여러 PSSession을 만듭니다. 기본값은 로컬 컴퓨터입니다.
하나 이상의 원격 컴퓨터의 NetBIOS 이름, IP 주소 또는 정규화된 도메인 이름을 입력합니다. 로컬 컴퓨터를 지정하려면 컴퓨터 이름, "localhost" 또는 점(.)을 입력합니다. 컴퓨터가 사용자와 다른 도메인에 있는 경우 정규화된 도메인 이름이 필요합니다. 또한 컴퓨터 이름(따옴표로 묶임)을 New-PSSession으로 파이프할 수 있습니다.
ComputerName 매개 변수의 값에 IP 주소를 사용하려면 명령에 Credential 매개 변수를 포함해야 합니다. 또한 HTTPS 전송을 사용하도록 컴퓨터를 구성하거나 원격 컴퓨터의 IP 주소를 로컬 컴퓨터의 WinRM TrustedHosts 목록에 포함해야 합니다. 컴퓨터 이름을 TrustedHosts 목록에 추가하는 방법에 대한 지침은 about_Remote_Troubleshooting의 "How to Add a Computer to the Trusted Host List(신뢰할 수 있는 호스트 목록에 컴퓨터를 추가하는 방법)"를 참조하십시오.
참고: Windows Vista 이상 버전에서 ComputerName 매개 변수 값에 로컬 컴퓨터를 포함하려면 "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작해야 합니다.
필수 여부 |
false |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue, ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-ConfigurationName <string>
새 PSSession에 사용할 세션 구성을 지정합니다.
구성 이름 또는 세션 구성에 대한 정규화된 리소스 URI(Uniform Resource Identifier)를 입력합니다. 구성 이름만 지정하는 경우 스키마 URI https://schemas.microsoft.com/powershell이 앞에 추가됩니다.
세션의 세션 구성은 원격 컴퓨터에 있습니다. 지정된 세션 구성이 원격 컴퓨터에 없으면 명령이 실패합니다.
기본값은 로컬 컴퓨터의 $PSSessionConfigurationName 기본 설정 변수의 값입니다. 이 기본 설정 변수를 설정하지 않으면 Microsoft.PowerShell이 기본값으로 사용됩니다. 자세한 내용은 about_Preference_Variables를 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-ConnectionURI <Uri[]>
연결 끝점을 정의하는 URI(Uniform Resource Identifier)를 지정합니다. URI는 정규화된 URI여야 합니다.
이 문자열의 형식은 다음과 같습니다.
<Transport>://<ComputerName>:<Port>/<ApplicationName>
기본값은 다음과 같습니다.
https://localhost:80/WSMAN
URI의 전송 세그먼트에 유효한 값은 HTTP 및 HTTPS입니다. ConnectionURI를 지정하지 않으면 UseSSL, ComputerName, Port 및 ApplicationName 매개 변수를 사용하여 URI 값을 지정할 수 있습니다.
대상 컴퓨터가 연결을 다른 URI로 리디렉션하는 경우 Windows PowerShell은 명령에 AllowRedirection 매개 변수가 사용되지 않은 한 리디렉션을 허용하지 않습니다.
필수 여부 |
true |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-Credential <PSCredential>
이 작업을 수행할 수 있는 권한을 가진 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
"User01", "Domain01\User01" 또는 "User@Domain.com"과 같은 사용자 이름을 입력하거나 Get-Credential cmdlet에서 반환한 것과 같은 PSCredential 개체를 입력합니다.
사용자 이름을 입력하면 암호를 묻는 메시지가 표시됩니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-Name <string[]>
PSSession의 이름을 지정합니다.
Get-PSSession, Enter-PSSession 등의 다른 cmdlet을 사용할 때 이 이름을 사용하여 PSSession을 참조할 수 있습니다. 이 이름은 컴퓨터나 현재 세션에 고유할 필요가 없습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Port <int>
이 명령에 사용되는 원격 컴퓨터의 네트워크 포트를 지정합니다. 기본값은 포트 80(HTTP 포트)입니다.
대체 포트를 사용하려면 먼저 원격 컴퓨터에 해당 포트에서 수신할 WinRM 수신기를 구성해야 합니다. 다음 명령을 사용하여 수신기를 구성합니다.
1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="<port-number>"}
꼭 필요한 경우가 아니면 Port 매개 변수를 사용하지 마십시오. 이 명령의 포트 설정은 명령이 실행되는 모든 컴퓨터와 세션에 적용됩니다. 대체 포트 설정을 사용하면 일부 컴퓨터에서 명령이 실행되지 않을 수 있습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
80 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-Session <PSSession[]>
지정된 PSSession을 새 PSSession의 모델로 사용합니다. 이 매개 변수는 지정된 PSSession과 동일한 속성을 사용하여 새 PSSession을 만듭니다.
PSSession이 포함된 변수를 입력하거나 PSSession을 만들거나 가져오는 명령(예: New-PSSession 또는 Get-PSSession 명령)을 입력합니다.
결과 PSSession은 원래 PSSession과 동일한 컴퓨터 이름, 응용 프로그램 이름, 연결 URI, 포트, 구성 이름, 스로틀 한도 및 SSL(Secure Sockets Layer) 값을 갖지만 다른 표시 이름, ID 및 인스턴스 ID(GUID)를 갖습니다.
필수 여부 |
false |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue, ByPropertyName) |
와일드카드 문자 적용 여부 |
false |
-SessionOption <PSSessionOption>
세션의 고급 옵션을 설정합니다. New-PSSessionOption cmdlet을 사용하여 만든 SessionOption 개체를 입력합니다.
옵션의 기본값은 $PSSessionOption 기본 설정 변수의 값(설정되어 있는 경우)에 의해 결정됩니다. 그렇지 않으면 세션에서 시스템 기본값이 사용됩니다.
세션 옵션 및 기본값에 대한 자세한 내용은 New-PSSessionOption을 참조하십시오. $PSSessionOption 기본 설정 변수에 대한 자세한 내용은 about_Preference_Variables를 참조하십시오.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-ThrottleLimit <int>
이 명령을 실행하기 위해 설정할 수 있는 최대 동시 연결 수를 지정합니다. 이 매개 변수를 생략하거나 0을 입력하면 기본값인 32가 사용됩니다.
스로틀 한도는 현재 명령에만 적용되며 세션이나 컴퓨터에는 적용되지 않습니다.
필수 여부 |
false |
위치 |
named |
기본값 |
32 |
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
-UseSSL
SSL(Secure Sockets Layer) 프로토콜을 사용하여 원격 컴퓨터에 연결합니다. 기본적으로 SSL은 사용되지 않습니다.
WS-Management는 네트워크로 전송되는 모든 Windows PowerShell 콘텐츠를 암호화합니다. UseSSL은 HTTP 연결 대신 HTTPS 연결을 통해 데이터를 보내는 추가적인 보호 기능입니다.
이 매개 변수를 사용하지만 명령에 사용되는 포트에서 SSL을 사용할 수 없는 경우 이 명령은 실패합니다.
필수 여부 |
false |
위치 |
named |
기본값 |
|
파이프라인 입력 적용 여부 |
false |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String, System.URI, System.Management.Automation.Runspaces.PSSession ComputerName(문자열), ConnectionURI(URI) 또는 세션(PSSession) 개체를 New-PSSession으로 파이프할 수 있습니다. |
출력 |
System.Management.Automation.Runspaces.PSSession |
참고
이 cmdlet은 Windows PowerShell 원격 인프라를 사용합니다. 이 cmdlet을 사용하려면 Windows PowerShell 원격 기능을 사용하도록 로컬 컴퓨터와 모든 원격 컴퓨터를 구성해야 합니다. 자세한 내용은 about_Remote_Requirements를 참조하십시오.
Windows Vista 이상 버전에서 로컬 컴퓨터에 PSSession을 만들려면 "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작해야 합니다.
PSSession을 완료하면 Remove-PSSession cmdlet을 사용하여 PSSession을 삭제하고 해당 리소스를 해제합니다.
예 1
C:\PS>$s = new-pssession
설명
-----------
이 명령은 로컬 컴퓨터에 새 PSSession을 만든 다음 $s 변수에 저장합니다.
이제 이 PSSession을 사용하여 로컬 컴퓨터에서 명령을 실행할 수 있습니다.
예 2
C:\PS>$Server01 = new-pssession -ComputerName Server01
설명
-----------
이 명령은 Server01 컴퓨터에 새 PSSession을 만든 다음 $Server01 변수에 저장합니다.
여러 PSSession을 만드는 경우 유용한 이름이 지정된 변수에 할당하십시오. 이렇게 하면 이후 명령에서 PSSession을 관리하는 데 도움이 됩니다.
예 3
C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3
설명
-----------
이 명령은 ComputerName 매개 변수로 지정된 각 컴퓨터에 하나씩 세 개의 PSSession을 새로 만듭니다.
이 명령은 할당 연산자(=)를 사용하여 새 PSSession을 변수 배열($s1, $s2, $s3)에 할당합니다. 이 명령은 Server01 PSSession을 $s1에, Server02 PSSession을 $s2에, Server03 PSSession을 $s3에 할당합니다.
여러 개체를 변수의 배열에 할당할 때 Windows PowerShell은 각 개체를 배열의 변수에 각각 할당합니다. 변수보다 개체가 많은 경우에는 모든 나머지 개체가 마지막 변수에 할당됩니다. 개체보다 변수가 많은 경우에는 나머지 변수가 비어 있습니다(null).
예 4
C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12
설명
-----------
이 명령은 서버 포트 8081에 연결하고 SSL 프로토콜을 사용하는 새 PSSession을 Server01 컴퓨터에 만듭니다. 새 PSSession은 "E12"라는 대체 세션 구성을 사용합니다.
포트를 설정하기 전에 포트 8081에서 수신 대기하도록 원격 컴퓨터에서 WinRM 수신기를 구성해야 합니다. 자세한 내용은 Port 매개 변수에 대한 설명을 참조하십시오.
예 5
C:\PS>new-pssession -session $s -credential domain01\user01
설명
-----------
이 명령은 기존 PSSession과 동일한 속성을 사용하여 새 PSSession을 만듭니다. 기존 PSSession의 리소스가 모두 사용되고 새 PSSession이 일부 부하를 오프로드하는 데 필요한 경우 이 명령 형식을 사용할 수 있습니다.
이 명령은 New-PSSession의 Session 매개 변수를 사용하여 $s 변수에 저장된 PSSession을 지정합니다. Domain1\Admin01 사용자의 자격 증명이 이 명령을 완료하는 데 사용됩니다.
예 6
C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01
설명
-----------
이 예에서는 다른 도메인의 컴퓨터에 전역 범위를 사용하여 PSSession을 만드는 방법을 보여 줍니다.
기본적으로 명령줄에서 만들어진 PSSession은 로컬 범위를 사용하여 만들어지고 스크립트에서 만들어진 PSSession에는 스크립트 범위가 있습니다.
전역 범위를 사용하여 PSSession을 만들려면 새 PSSession을 만든 다음 전역 범위로 캐스팅되는 변수에 PSSession을 저장합니다. 이 경우 $s 변수는 전역 범위로 캐스팅됩니다.
이 명령은 ComputerName 매개 변수를 사용하여 원격 컴퓨터를 지정합니다. 컴퓨터가 사용자 계정과 다른 도메인에 있기 때문에 컴퓨터의 전체 이름은 사용자의 자격 증명과 함께 지정됩니다.
예 7
C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50
설명
-----------
이 명령은 Servers.txt 파일에 나열된 200대의 각 컴퓨터에 PSSession을 만들고 결과 PSSession을 $rs 변수에 저장합니다. PSSession의 스로틀 한도는 50입니다.
컴퓨터의 이름이 데이터베이스, 스프레드시트, 텍스트 파일 또는 다른 텍스트 변환 가능 형식에 저장되는 경우 이 명령 형식을 사용할 수 있습니다.
예 8
C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01
설명
-----------
이 명령은 Server01 컴퓨터에 PSSession을 만든 다음 $s 변수에 저장합니다. 이 명령은 URI 매개 변수를 사용하여 전송 프로토콜, 원격 컴퓨터, 포트 및 대체 세션 구성을 지정합니다. 또한 Credential 매개 변수를 사용하여 원격 컴퓨터에 세션을 만들 수 있는 권한을 가진 사용자 계정을 지정합니다.
예 9
C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16
C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob
설명
-----------
이들 명령은 PSSession의 집합을 만든 다음 각 PSSession에서 백그라운드 작업을 실행합니다.
첫 번째 명령은 Servers.csv 파일에 나열된 각 컴퓨터에 새 PSSession을 만듭니다. 이 명령은 New-PSSession cmdlet을 사용하여 PSSession을 만듭니다. ComputerName 매개 변수의 값은 Import-Csv cmdlet을 사용하여 Servers.csv 파일을 가져오고 해당 내용을 읽는 명령입니다.
이 명령은 Credential 매개 변수를 사용하여 도메인 관리자의 권한으로 PSSession을 만들고 ThrottleLimit 매개 변수를 사용하여 명령을 16개의 동시 연결로 제한합니다. 이 명령은 PSSession을 $s 변수에 저장합니다.
두 번째 명령은 Invoke-Command의 AsJob 매개 변수를 사용하여 $s의 각 PSSession에서 "Get-Process PowerShell" 명령을 실행하는 백그라운드 작업을 시작합니다.
Windows PowerShell의 백그라운드 작업에 대한 자세한 내용은 about_Jobs 및 about_Remote_Jobs를 참조하십시오.
예 10
C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management
설명
-----------
이 명령은 컴퓨터 이름 대신 URI로 지정된 컴퓨터에 연결하는 새 PSSession을 만듭니다.
예 11
C:\PS>$so = New-WSManSessionOption -SkipCACheck
PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01
설명
-----------
이 예에서는 SessionOption 매개 변수를 만들고 사용하는 방법을 보여 줍니다.
첫 번째 명령은 New-WSManSessionOption cmdlet을 사용하여 세션 옵션을 만든 다음 결과 SessionOption 개체를 $so 매개 변수에 저장합니다.
두 번째 명령은 새 세션의 옵션을 사용합니다. 이 명령은 New-PSSession cmdlet을 사용하여 새 세션을 만듭니다. SessionOption 매개 변수의 값은 $so 변수에 있는 SessionOption 개체입니다.
참고 항목
개념
about_PSSessions
about_Remote
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command