about_Session_Configuration_Files

간단한 설명

세션 구성("엔드포인트"라고도 함)에서 세션 구성을 사용하는 세션 환경을 정의하는 데 사용되는 세션 구성 파일에 대해 설명합니다.

자세한 설명

이 정보는 Windows에서 실행되는 PowerShell에만 적용됩니다.

"세션 구성 파일"은 세션 구성 속성 및 값의 해시 테이블을 포함하는 .pssc 파일 이름 확장명을 가진 텍스트 파일입니다. 세션 구성 파일을 사용하여 세션 구성의 속성을 설정할 수 있습니다. 이렇게 하면 해당 세션 구성을 사용하는 모든 PowerShell 세션의 환경이 정의됩니다.

세션 구성 파일을 사용하면 복잡한 C# 어셈블리 또는 스크립트를 사용하지 않고도 사용자 지정 세션 구성을 쉽게 만들 수 있습니다.

"세션 구성" 또는 "엔드포인트"는 컴퓨터에서 세션을 만들 수 있는 사용자와 같은 항목을 결정하는 로컬 컴퓨터 설정의 컬렉션입니다. 사용자가 해당 세션에서 실행할 수 있는 명령 및 세션이 권한 있는 가상 계정으로 실행되어야 하는지 여부입니다. 세션 구성에 대한 자세한 내용은 about_Session_Configurations를 참조하세요.

세션 구성은 Windows PowerShell 2.0에서 도입되었으며 세션 구성 파일은 Windows PowerShell 3.0에서 도입되었습니다. 세션 구성에 세션 구성 파일을 포함하려면 Windows PowerShell 3.0을 사용해야 합니다. 그러나 Windows PowerShell 2.0 이상 사용자는 세션 구성의 설정에 의해 영향을 받습니다.

사용자 지정 세션 만들기

세션 구성에서 세션 속성을 지정하여 PowerShell 세션의 많은 기능을 사용자 지정할 수 있습니다. 사용자 지정 Runspace를 정의하는 C# 프로그램을 작성하여 세션을 사용자 지정하거나 세션 구성 파일을 사용하여 세션 구성을 사용하여 만든 세션의 속성을 정의할 수 있습니다. 일반적으로 C# 프로그램을 작성하는 것보다 세션 구성 파일을 사용하는 것이 더 쉽습니다.

세션 구성 파일을 사용하여 신뢰할 수 있는 사용자를 위한 완전 작동 세션과 같은 항목을 만들 수 있습니다. 최소 액세스를 허용하는 잠긴 세션 세션은 특정 용도로 설계되었으며 해당 작업에 필요한 모듈만 포함합니다. 권한 없는 사용자는 권한 있는 계정으로만 특정 명령을 실행할 수 있는 세션입니다.

또한 세션 사용자가 스크립트 블록과 같은 PowerShell 언어 요소를 사용할 수 있는지 또는 명령만 실행할 수 있는지 여부를 관리할 수 있습니다. 세션에서 실행할 수 있는 PowerShell 사용자의 버전을 관리할 수 있습니다. 세션으로 가져올 모듈을 관리합니다. 사용자가 실행할 수 있는 cmdlet, 함수 및 별칭 세션을 관리합니다. RoleDefinitions 필드를 사용하는 경우 그룹 멤버 자격에 따라 세션에서 사용자에게 다른 기능을 제공할 수 있습니다.

RoleDefinitions 및 이 값을 정의하는 방법에 대한 자세한 내용은 New-PSRoleCapabilityFile Cmdlet에 대한 도움말 항목을 참조하세요.

세션 구성 파일 만들기

세션 구성 파일을 만드는 가장 쉬운 방법은 New-PSSessionConfigurationFile cmdlet을 사용하는 것입니다. 이 cmdlet은 올바른 구문과 형식을 사용하고 많은 구성 파일 속성 값을 자동으로 확인하는 파일을 생성합니다.

세션 구성 파일에서 설정할 수 있는 속성에 대한 자세한 설명은 New-PSSessionConfigurationFile cmdlet에 대한 도움말 항목을 참조하세요.

다음 명령은 기본값을 사용하는 세션 구성 파일을 만듭니다. 결과 구성 파일은 Path 매개 변수(파일 경로를 지정하는) 이외의 매개 변수가 포함되지 않으므로 기본값만 사용합니다.

New-PSSessionConfigurationFile -Path .\Defaults.pssc

기본 텍스트 편집기에서 새 구성 파일을 보려면 다음 명령을 사용합니다.

Invoke-Item -Path .\Defaults.pssc

사용자가 명령을 실행할 수 있지만 PowerShell 언어의 다른 요소를 사용하지 않는 세션에 대한 세션 구성을 만들려면 다음을 입력합니다.

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

이전 명령에서 LanguageMode 매개 변수를 NoLanguage로 설정하면 사용자가 스크립트 작성 또는 실행 또는 변수 사용과 같은 작업을 수행할 수 없습니다.

사용자가 Get cmdlet만 사용할 수 있는 세션에 대한 세션 구성을 만들려면 다음을 입력합니다.

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

앞의 예제에서 VisibleCmdlets 매개 변수를 Get-*로 설정하면 사용자가 문자열 값 "Get-"으로 시작하는 이름이 있는 cmdlet으로 제한됩니다.

사용자의 자격 증명 대신 권한 있는 가상 계정으로 실행되는 세션에 대한 세션 구성을 만들려면 다음을 입력합니다.

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

사용자에게 표시되는 명령이 역할 기능 파일에 지정된 세션에 대한 세션 구성을 만들려면 다음을 입력합니다.

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

세션 구성 파일 사용

세션 구성을 만들 때 세션 구성 파일을 포함하거나 나중에 세션 구성에 파일을 추가할 수 있습니다.

세션 구성을 만들 때 세션 구성 파일을 포함하려면 Register-PSSessionConfiguration cmdlet의 Path 매개 변수를 사용합니다.

예를 들어 다음 명령은 NoLanguage 세션 구성을 만들 때 NoLanguage.pssc 파일을 사용합니다.

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

새 NoLanguage 세션이 시작되면 사용자는 PowerShell 명령에만 액세스할 수 있습니다.

기존 세션 구성에 세션 구성 파일을 추가하려면 Set-PSSessionConfiguration cmdlet 및 Path 매개 변수를 사용합니다. 지정된 세션 구성을 사용하여 만든 새 세션에 영향을 줍니다. Set-PSSessionConfiguration cmdlet은 세션 자체를 변경하고 세션 구성 파일을 수정하지 않습니다.

예를 들어 다음 명령은 NoLanguage.pssc 파일을 LockedDown 세션 구성에 추가합니다.

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

사용자가 LockedDown 세션 구성을 사용하여 세션을 만드는 경우 cmdlet을 실행할 수 있지만 변수를 만들거나 사용하거나 값을 할당하거나 다른 PowerShell 언어 요소를 사용할 수는 없습니다.

다음 명령은 New-PSSession cmdlet을 사용하여 LockedDown 세션 구성을 사용하는 Srv01 컴퓨터에서 세션을 만들고 $s 변수에 세션에 대한 개체 참조를 저장합니다. 세션 구성의 ACL(액세스 제어 목록)은 세션을 만드는 데 사용할 수 있는 사용자를 결정합니다.

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

NoLanguage 제약 조건이 LockedDown 세션 구성에 추가되었으므로 LockedDown 세션의 사용자는 PowerShell 명령 및 cmdlet만 실행할 수 있습니다. 예를 들어 다음 두 명령은 Invoke-Command cmdlet을 사용하여 $s 변수에서 참조되는 세션에서 명령을 실행합니다. Get-UICulture cmdlet을 실행하고 변수를 사용하지 않는 첫 번째 명령이 성공합니다. $PSUICulture 변수의 값을 가져오는 두 번째 명령이 실패합니다.

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

세션 구성 파일 편집

RunAsVirtualAccount 및 RunAsVirtualAccountGroups를 제외한 세션 구성의 모든 설정은 세션 구성에서 사용하는 세션 구성 파일을 편집하여 수정할 수 있습니다. 이렇게 하려면 먼저 세션 구성 파일의 활성 복사본을 찾습니다.

세션 구성에서 세션 구성 파일을 사용하는 경우 PowerShell은 세션 구성 파일의 활성 복사본을 만들고 로컬 컴퓨터의 $pshome\SessionConfig 디렉터리에 저장합니다.

세션 구성 파일의 활성 복사본 위치는 세션 구성 개체의 ConfigFilePath 속성에 저장됩니다.

다음 명령은 NoLanguage 세션 구성에 대한 세션 구성 파일의 위치를 가져옵니다.

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

이 명령은 다음과 유사한 파일 경로를 반환합니다.

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

모든 텍스트 편집기에서 .pssc 파일을 편집할 수 있습니다. 파일이 저장되면 세션 구성을 사용하는 새 세션에서 사용됩니다.

RunAsVirtualAccount 또는 RunAsVirtualAccountGroups 설정을 수정해야 하는 경우 세션 구성을 등록 취소하고 편집된 값을 포함하는 세션 구성 파일을 다시 등록해야 합니다.

세션 구성 파일 테스트

Test-PSSessionConfigurationFile cmdlet을 사용하여 수동으로 편집한 세션 구성 파일을 테스트합니다. 파일 구문과 값이 유효하지 않은 경우 사용자는 세션 구성을 사용하여 세션을 만들 수 없습니다.

예를 들어 다음 명령은 NoLanguage 세션 구성의 활성 세션 구성 파일을 테스트합니다.

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

구성 파일의 구문과 값이 유효한 Test-PSSessionConfigurationFile이면 True를 반환합니다. 구문과 값이 유효하지 않으면 cmdlet은 False를 반환합니다.

Test-PSSessionConfigurationFile을 사용하여 New-PSSessionConfiguration cmdlet이 만드는 파일을 포함하여 모든 세션 구성 파일을 테스트할 수 있습니다. 자세한 내용은 Test-PSSessionConfigurationFile cmdlet에 대한 도움말 항목을 참조하세요.

세션 구성 파일 제거

세션 구성에서 세션 구성 파일을 제거할 수 없습니다. 그러나 기본 설정을 사용하는 새 파일로 파일을 바꿀 수 있습니다. 이렇게 하면 원래 구성 파일에서 사용하는 설정이 효과적으로 취소됩니다.

세션 구성 파일을 바꾸려면 기본 설정을 사용하는 새 세션 구성 파일을 만든 다음 Set-PSSessionConfiguration cmdlet을 사용하여 사용자 지정 세션 구성 파일을 새 파일로 바꿉니다.

예를 들어 다음 명령은 기본 세션 구성 파일을 만든 다음 NoLanguage 세션 구성에서 활성 세션 구성 파일을 바꿉니다.

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

이러한 명령이 완료되면 NoLanguage 세션 구성은 실제로 해당 세션 구성으로 만든 모든 세션에 대한 전체 언어 지원(기본 설정)을 제공합니다.

세션 구성의 속성 보기 세션 구성 파일을 사용하여 세션 구성을 나타내는 세션 구성 개체에는 세션 구성을 쉽게 검색하고 분석할 수 있는 추가 속성이 있습니다. (아래에 표시된 형식 이름에는 서식이 지정된 뷰 정의가 포함되어 있습니다.) Get-PSSessionConfiguration cmdlet을 실행하고 반환된 데이터를 Get-Member cmdlet에 파이핑하여 속성을 볼 수 있습니다.

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

이러한 속성을 사용하면 특정 세션 구성을 쉽게 검색할 수 있습니다. 예를 들어 ExecutionPolicy 속성을 사용하여 RemoteSigned 실행 정책을 사용하여 세션을 지원하는 세션 구성을 찾을 수 있습니다. ExecutionPolicy 속성은 세션 구성 파일을 사용하는 세션에만 존재하기 때문에 이 명령은 모든 정규화 세션 구성을 반환하지 않을 수 있습니다.

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

다음 명령은 RunAsUser가 Exchange 관리자인 세션 구성을 가져옵니다.

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

구성과 연결된 역할 정의에 대한 정보를 보려면 Get-PSSessionCapability cmdlet을 사용합니다. 이 cmdlet을 사용하면 특정 엔드포인트에서 특정 사용자가 사용할 수 있는 명령 및 환경을 확인할 수 있습니다.

주의

세션 구성은 "빈" 세션이라고도 하는 세션 유형을 지원합니다. 빈 세션 유형을 사용하면 선택한 명령을 사용하여 사용자 지정 세션을 만들 수 있습니다. 모듈, 함수 또는 스크립트를 빈 세션에 추가하지 않으면 세션이 식으로 제한되며 실제로 사용되지 않을 수 있습니다. SessionType 속성은 빈 세션으로 작업 중인지 여부를 알려줍니다.

참고 항목