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 속성은 빈 세션으로 작업 중인지 여부를 알려줍니다.
참고 항목
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile
PowerShell