Register-PSSessionConfiguration

새 세션 구성을 만들고 등록합니다.

Syntax

Register-PSSessionConfiguration
        [-ProcessorArchitecture <String>]
        [-Name] <String>
        [-ApplicationBase <String>]
        [-RunAsCredential <PSCredential>]
        [-ThreadApartmentState <ApartmentState>]
        [-ThreadOptions <PSThreadOptions>]
        [-AccessMode <PSSessionConfigurationAccessMode>]
        [-UseSharedProcess]
        [-StartupScript <String>]
        [-MaximumReceivedDataSizePerCommandMB <Double>]
        [-MaximumReceivedObjectSizeMB <Double>]
        [-SecurityDescriptorSddl <String>]
        [-ShowSecurityDescriptorUI]
        [-Force]
        [-NoServiceRestart]
        [-PSVersion <Version>]
        [-SessionTypeOption <PSSessionTypeOption>]
        [-TransportOption <PSTransportOption>]
        [-ModulesToImport <Object[]>]
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Register-PSSessionConfiguration
        [-ProcessorArchitecture <String>]
        [-Name] <String>
        [-AssemblyName] <String>
        [-ApplicationBase <String>]
        [-ConfigurationTypeName] <String>
        [-RunAsCredential <PSCredential>]
        [-ThreadApartmentState <ApartmentState>]
        [-ThreadOptions <PSThreadOptions>]
        [-AccessMode <PSSessionConfigurationAccessMode>]
        [-UseSharedProcess]
        [-StartupScript <String>]
        [-MaximumReceivedDataSizePerCommandMB <Double>]
        [-MaximumReceivedObjectSizeMB <Double>]
        [-SecurityDescriptorSddl <String>]
        [-ShowSecurityDescriptorUI]
        [-Force]
        [-NoServiceRestart]
        [-PSVersion <Version>]
        [-SessionTypeOption <PSSessionTypeOption>]
        [-TransportOption <PSTransportOption>]
        [-ModulesToImport <Object[]>]
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]
Register-PSSessionConfiguration
        [-ProcessorArchitecture <String>]
        [-Name] <String>
        [-RunAsCredential <PSCredential>]
        [-ThreadApartmentState <ApartmentState>]
        [-ThreadOptions <PSThreadOptions>]
        [-AccessMode <PSSessionConfigurationAccessMode>]
        [-UseSharedProcess]
        [-StartupScript <String>]
        [-MaximumReceivedDataSizePerCommandMB <Double>]
        [-MaximumReceivedObjectSizeMB <Double>]
        [-SecurityDescriptorSddl <String>]
        [-ShowSecurityDescriptorUI]
        [-Force]
        [-NoServiceRestart]
        [-TransportOption <PSTransportOption>]
        -Path <String>
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]

Description

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

cmdlet은 Register-PSSessionConfiguration 로컬 컴퓨터에 새 세션 구성을 만들고 등록합니다. 원격 사용자에 대한 사용자 지정 세션을 만드는 데 사용할 수 있는 고급 cmdlet입니다.

모든 PowerShell 세션(PSSession)은 엔드포인트라고도 하는 세션 구성을 사용합니다. 사용자가 컴퓨터에 연결하는 세션을 만들 때 세션 구성을 선택하거나 PowerShell 원격을 사용하도록 설정할 때 등록된 기본 세션 구성을 사용할 수 있습니다. 사용자는 현재 세션에서 만든 원격 세션에 대한 기본 구성을 지정하는 $PSSessionConfigurationName 기본 설정 변수를 설정할 수도 있습니다.

세션 구성은 원격 세션에 대한 환경을 정의합니다. 구성은 세션에서 사용할 수 있는 명령 및 언어 요소를 결정할 수 있으며, 세션이 단일 개체 또는 명령에서 원격으로 수신할 수 있는 데이터 양을 제한하는 설정과 같이 컴퓨터를 보호하는 설정을 포함할 수 있습니다. 세션 구성의 보안 설명자는 세션 구성을 사용할 수 있는 권한이 있는 사용자를 결정합니다.

새 구성 클래스를 구현하는 어셈블리를 사용하고 세션에서 실행되는 스크립트를 사용하여 구성 요소를 정의할 수 있습니다. PowerShell 3.0부터 세션 구성 파일을 사용하여 세션 구성을 정의할 수도 있습니다.

세션 구성에 대한 자세한 내용은 about_Session_Configurations 참조하세요. 세션 구성 파일에 대한 자세한 내용은 about_Session_Configuration_Files 참조하세요.

예제

예제 1: NewShell 세션 구성 등록

이 예제에서는 NewShell 세션 구성을 등록합니다. AssemblyName 및 ApplicationBase 매개 변수는 세션 구성에서 cmdlet 및 공급자를 지정하는 MyShell.dll 파일의 위치를 지정 합니다. ConfigurationTypeName 매개 변수는 어셈블리에서 사용할 구성 클래스를 지정합니다.

$sessionConfiguration = @{
    Name='NewShell'
    ApplicationBase='c:\MyShells\'
    AssemblyName='MyShell.dll'
    ConfigurationTypeName='MyClass'
}
Register-PSSessionConfiguration @sessionConfiguration

이 구성을 사용하려면 .를 입력합니다 New-PSSession -ConfigurationName newshell.

예제 2: MaintenanceShell 세션 구성 등록

다음은 로컬 컴퓨터에 MaintenanceShell 세션 구성을 등록하는 예제입니다. StartupScript 매개 변수는 스크립트를 Maintenance.ps1 지정합니다.

Register-PSSessionConfiguration -Name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1

사용자가 명령을 사용하고 New-PSSession MaintenanceShell 구성을 선택하면 스크립트가 Maintenance.ps1 새 세션에서 실행됩니다. 스크립트는 세션을 구성할 수 있습니다. 여기에는 모듈 가져오기 및 세션에 대한 실행 정책 설정이 포함됩니다. 스크립트가 종료되지 않는 오류를 포함하여 오류를 생성하는 경우 명령이 New-PSSession 실패합니다.

예제 3: 세션 구성 등록

다음은 관리Shell 세션 구성을 등록하는 예제입니다.

변수는 $sessionParams 모든 매개 변수 값을 포함하는 해시 테이블입니다. 이 해시 테이블은 PowerShell 스플래팅을 사용하여 cmdlet에 전달됩니다. 이 명령은 SecurityDescritorSDDL 매개 변수를 사용하여 변수 값 $sddl 에 SDDL을 지정하고 MaximumReceivedObjectSizeMB 매개 변수를 사용하여 개체 크기 제한을 높 Register-PSSessionConfiguration 입니다. 또한 StartupScript 매개 변수를 사용하여 세션을 구성하는 스크립트를 지정합니다.

$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FASA;GWGX;;;WD)"
$sessionParams = @{
    Name="AdminShell"
    SecurityDescriptorSDDL=$sddl
    MaximumReceivedObjectSizeMB=20
    StartupScript="C:\scripts\AdminShell.ps1"
}
Register-PSSessionConfiguration @sessionParams

예제 4: 구성 컨테이너 요소 반환

이 예제에서는 MaintenanceShell 구성을 등록하는 방법을 보여줍니다. Register-PSSessionConfiguration 는 변수에 저장된 WSManConfigContainerElement 개체를 $s 반환합니다. Format-List 는 반환된 개체의 모든 속성을 표시합니다. PSPath 속성은 개체가 WSMan: 드라이브의 디렉터리에 저장되어 있음을 보여 줍니다. Get-ChildItem (별칭 dir) 는 경로의 항목을 표시합니다 WSMan:\LocalHost\PlugIn . 여기에는 새 MaintenanceShell 구성과 PowerShell 과 함께 제공되는 두 가지 기본 구성이 포함됩니다.

$s = Register-PSSessionConfiguration -Name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1
$s | Format-List -Property *
dir WSMan:\LocalHost\Plugin

PSPath            : Microsoft.WSMan.Management\WSMan::localhost\Plugin\MaintenanceShell
PSParentPath      : Microsoft.WSMan.Management\WSMan::localhost\Plugin
PSChildName       : MaintenanceShell
PSDrive           : WSMan
PSProvider        : Microsoft.WSMan.Management\WSMan
PSIsContainer     : True
Keys              : {Name=MaintenanceShell}
Name              : MaintenanceShell
TypeNameOfElement : Container

Name                      Type                 Keys
----                      ----                 ----
MaintenanceShell          Container            {Name=MaintenanceShell}
microsoft.powershell      Container            {Name=microsoft.powershell}
microsoft.powershell32    Container            {Name=microsoft.powershell32}

예제 5: 시작 스크립트를 사용하여 세션 구성 등록

이 예제에서는 WithProfile 세션 구성을 만들고 등록합니다. StartupScript 매개 변수는 PowerShell이 세션 구성을 사용하는 모든 세션에 대해 지정된 스크립트를 실행하도록 지시합니다.

Register-PSSessionConfiguration -Name WithProfile -StartupScript Add-Profile.ps1

스크립트에는 점 소싱을 사용하여 세션의 현재 범위에서 사용자의 CurrentUserAllHosts 프로필을 실행하는 단일 명령이 포함되어 있습니다.

프로필에 대한 자세한 내용은 about_Profiles 참조하세요. 점 소싱에 대한 자세한 내용은 about_Scopes 참조하세요.

매개 변수

-AccessMode

세션 구성을 사용하거나 사용하지 않도록 설정하고 컴퓨터에서 원격 또는 로컬 세션에 사용할 수 있는지를 결정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • Disabled. 세션 구성을 사용할 수 없습니다. 컴퓨터에 대한 원격 또는 로컬 액세스에는 사용할 수 없습니다.
  • 로컬. 로컬 컴퓨터의 사용자가 세션 구성을 사용하여 동일한 컴퓨터에서 로컬 루프백 세션을 만들 수 있지만 원격 사용자에 대한 액세스는 거부합니다.
  • 원격. 로컬 및 원격 사용자가 세션 구성을 사용하여 세션을 만들고 이 컴퓨터에서 명령을 실행할 수 있습니다.

기본값은 Remote입니다.

다른 cmdlet은 나중에 이 매개 변수의 값을 재정의할 수 있습니다. 예를 들어 cmdlet은 Enable-PSRemoting 모든 세션 구성에 대한 원격 액세스를 허용하고Disable-PSRemoting, Enable-PSSessionConfiguration cmdlet은 세션 구성을 사용하도록 설정하고, cmdlet은 모든 세션 구성에 대한 원격 액세스를 차단합니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:PSSessionConfigurationAccessMode
Accepted values:Disabled, Local, Remote
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationBase

AssemblyName 매개 변수 값에 지정된 어셈블리 파일(*.dll)의 경로를 지정합니다. AssemblyName 매개 변수 값에 경로가 포함되지 않은 경우 이 매개 변수를 사용합니다. 기본값은 현재 디렉터리입니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AssemblyName

구성 형식이 정의된 어셈블리 파일(*.dll)의 이름을 지정합니다. 이 매개 변수 또는 ApplicationBase 매개 변수 값에서 .dll 경로를 지정할 수 있습니다.

ConfigurationTypeName 매개 변수를 지정할 때 이 매개 변수가 필요합니다.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ConfigurationTypeName

이 구성에 사용되는 Microsoft .NET Framework 유형의 정규화된 이름을 지정합니다. 지정하는 형식은 System.Management.Automation.Remoting.PSSessionConfiguration 클래스를 구현해야 합니다.

구성 형식을 구현하는 어셈블리 파일(*.dll)을 지정하려면 AssemblyName 및 ApplicationBase 매개 변수를 지정합니다.

형식을 만들면 cmdlet의 특정 매개 변수를 노출하거나 숨기거나 사용자가 재정의할 수 없는 데이터 크기 및 개체 크기 제한을 설정하는 등 세션 구성의 더 많은 측면을 제어할 수 있습니다.

이 매개 변수 를 생략하면 DefaultRemotePowerShellConfiguration 클래스가 세션 구성에 사용됩니다.

Type:String
Position:2
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

모든 사용자 프롬프트를 표시하지 않고 메시지를 표시하지 않고 WinRM 서비스를 다시 시작합니다. 서비스를 다시 시작하면 구성 변경 내용이 적용됩니다.

다시 시작을 방지하고 다시 시작 프롬프트를 표시하지 않도록 하려면 NoServiceRestart 매개 변수를 지정합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumReceivedDataSizePerCommandMB

단일 원격 명령에서 이 컴퓨터로 보낼 수 있는 데이터 양에 대한 제한을 지정합니다. 데이터 크기를 MB(메가바이트)로 입력합니다. 기본값은 50MB입니다.

ConfigurationTypeName 매개 변수에 지정된 구성 형식에 데이터 크기 제한이 정의되면 구성 형식의 제한이 사용되고 이 매개 변수의 값은 무시됩니다.

Type:Nullable<T>[Double]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumReceivedObjectSizeMB

단일 개체에서 이 컴퓨터로 보낼 수 있는 데이터 양에 대한 제한을 지정합니다. 데이터 크기를 메가바이트 단위로 입력합니다. 기본값은 10MB입니다.

ConfigurationTypeName 매개 변수에 지정된 구성 형식에 개체 크기 제한이 정의되면 구성 형식의 제한이 사용되고 이 매개 변수의 값이 무시됩니다.

Type:Nullable<T>[Double]
Position:Named
Default value:10
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ModulesToImport

세션 구성을 사용하는 세션으로 자동으로 가져오는 모듈을 지정합니다.

기본적으로 Microsoft.PowerShell.Core세션으로 가져옵니다. cmdlet이 제외되지 않는 한 세션에 모듈을 추가하는 데 사용할 Import-Module 수 있습니다.

이 매개 변수 값에 지정된 모듈은 SessionType 매개 변수로 지정된 모듈과 세션 구성 파일(New-PSSessionConfigurationFile)의 ModulesToImport 키에 나열된 모듈 외에 가져옵니다. 그러나 세션 구성 파일의 설정은 모듈에서 내보낸 명령을 숨기거나 사용자가 명령을 사용하지 못하도록 할 수 있습니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

세션 구성의 이름을 지정합니다. 이 매개 변수는 필수입니다.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoServiceRestart

WinRM 서비스를 다시 시작하지 않고 서비스를 다시 시작하라는 프롬프트를 표시하지 않습니다.

기본적으로 명령을 실행 Register-PSSessionConfiguration 하면 WinRM 서비스를 다시 시작하여 새 세션 구성을 적용하라는 메시지가 표시됩니다. WinRM 서비스를 다시 시작할 때까지 새 세션 구성은 유효하지 않습니다.

메시지를 표시하지 않고 WinRM 서비스를 다시 시작하려면 Force 매개 변수를 지정합니다. WinRM 서비스를 수동으로 다시 시작하려면 cmdlet을 Restart-Service 사용합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

에서 만든 New-PSSessionConfigurationFile것과 같이 세션 구성 파일(.pssc)의 경로 및 파일 이름을 지정합니다. 경로를 생략하면 기본값은 현재 디렉터리입니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ProcessorArchitecture

이 세션 구성을 사용하는 세션에서 32비트 또는 64비트 버전의 PowerShell 프로세스를 시작할지 여부를 결정합니다. 이 매개 변수에 허용되는 값은 x86(32비트) 및 AMD64(64비트)입니다. 기본값은 세션 구성을 호스트하는 컴퓨터의 프로세서 아키텍처에 따라 결정됩니다.

이 매개 변수를 사용하여 64비트 컴퓨터에서 32비트 세션을 만들 수 있습니다. 32비트 컴퓨터에 64비트 프로세스를 만들려고 하면 실패합니다.

Type:String
Aliases:PA
Accepted values:x86, amd64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSVersion

이 세션 구성을 사용하는 세션에서 PowerShell 버전을 지정합니다.

이 매개 변수의 값은 세션 구성 파일의 PowerShellVersion 키 값보다 우선합니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:Version
Aliases:PowerShellVersion
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsCredential

세션의 명령에 대한 자격 증명을 지정합니다. 기본적으로 명령은 현재 사용자의 사용 권한으로 실행됩니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecurityDescriptorSddl

구성에 대한 SDDL(보안 설명자 정의 언어) 문자열을 지정합니다.

이 문자열은 새 세션 구성을 사용하는 데 필요한 권한을 결정합니다. 세션에서 세션 구성을 사용하려면 사용자에게 구성에 대한 실행(호출) 이상의 권한이 있어야 합니다.

보안 설명자가 복잡한 경우 이 매개 변수 대신 ShowSecurityDescriptorUI 매개 변수를 사용하는 것이 좋습니다. 동일한 명령에서 두 매개 변수를 모두 사용할 수 없습니다.

이 매개 변수를 생략하면 WinRM 서비스에 대한 루트 SDDL이 이 구성에 사용됩니다. 루트 SDDL을 보거나 변경하려면 WSMan 공급자를 사용합니다. 예: Get-Item wsman:\localhost\service\rootSDDL. WSMan 공급자에 대한 자세한 내용은 .를 입력합니다 Get-Help wsman.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionTypeOption

세션 구성에 대한 형식별 옵션을 지정합니다. cmdlet이 반환하는 PSWorkflowExecutionOption 개체와 같은 세션 형식 옵션 개체를 New-PSWorkflowExecutionOption 입력합니다.

세션 구성을 사용하는 세션 옵션은 세션 옵션 및 세션 구성 옵션의 값에 따라 결정됩니다. 지정하지 않는 한 cmdlet 사용 New-PSSessionOption 과 같이 세션에서 설정된 옵션이 세션 구성에서 설정된 옵션보다 우선합니다. 그러나 세션 옵션 값은 세션 구성에 설정된 최대값을 초과할 수 없습니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:PSSessionTypeOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowSecurityDescriptorUI

이 cmdlet은 세션 구성에 대한 SDDL을 만드는 데 도움이 되는 속성 시트를 표시합니다. 명령을 입력 Register-PSSessionConfiguration 한 다음 WinRM 서비스를 다시 시작하면 속성 시트가 나타납니다.

구성에 대한 사용 권한을 설정할 때 사용자는 세션에서 세션 구성을 사용하려면 적어도 실행(호출) 권한이 있어야 합니다.

SecurityDescriptorSDDL 매개 변수와 이 매개 변수는 동일한 명령에서 사용할 수 없습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StartupScript

PowerShell 스크립트의 정규화된 경로를 지정합니다. 지정한 스크립트는 세션 구성을 사용하는 새 세션에서 실행됩니다.

스크립트를 사용하여 세션을 추가로 구성할 수 있습니다. 스크립트에서 종료되지 않는 오류라도 오류를 생성하면 세션이 생성되지 않고 명령이 New-PSSession 실패합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThreadApartmentState

사용할 스레딩 모듈의 아파트 상태를 지정합니다. 허용되는 값은 다음과 같습니다.

  • Unknown
  • MTA
  • STA
Type:ApartmentState
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThreadOptions

세션에서 명령을 실행할 때 스레드를 만들고 사용하는 방법을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

  • 기본값
  • ReuseThread
  • UseCurrentThread
  • UseNewThread

기본값은 UseCurrentThread입니다.

자세한 내용은 PSThreadOptions 열거형을 참조 하세요.

Type:PSThreadOptions
Accepted values:Default, UseNewThread, ReuseThread, UseCurrentThread
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TransportOption

전송 옵션을 지정합니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:PSTransportOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSharedProcess

하나의 프로세스만 사용하여 동일한 사용자가 시작한 모든 세션을 호스트하고 동일한 세션 구성을 사용합니다. 기본적으로 각 세션은 자체 프로세스에서 호스트됩니다.

이 매개 변수는 PowerShell 3.0에서 도입되었습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

None

개체를 이 cmdlet으로 파이프할 수 없습니다.

출력

WSManConfigContainerElement

참고

이 cmdlet은 Windows 플랫폼에서만 사용할 수 있습니다.

이 cmdlet을 실행하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 시작해야 합니다.

이 cmdlet은 WS-Management(Web Services for Management) 플러그 인 구성을 나타내는 XML을 생성하고 로컬 컴퓨터(New-Item wsman:\localhost\plugin)에 플러그 인을 등록하는 WS-Management에 XML을 보냅니다.

세션 구성 개체의 속성은 세션 구성에 대해 설정된 옵션 및 해당 옵션의 값에 따라 달라집니다. 또한 세션 구성 파일을 사용하는 세션 구성에는 추가 속성이 있습니다.