about_Session_Configuration_Files
업데이트 날짜: 2014년 5월
적용 대상: Windows PowerShell 3.0, Windows PowerShell 4.0
항목
about_Session_Configuration_Files
간단한 설명
세션 구성("끝점")에서 세션 구성을 사용하는 세션의 환경을 정의하는 데 사용할 수 있는 세션 구성 파일에 대해 설명합니다.
자세한 설명
"세션 구성 파일"은 세션 구성 속성 및 값의 해시 테이블이 포함된 텍스트 파일로, .pssc 파일 이름 확장명을 사용합니다. 세션 구성 파일을 사용하여 세션 구성의 속성을 설정할 수 있으므로 세션 구성을 사용하는 Windows PowerShell® 세션의 환경을 정의할 수 있습니다.
세션 구성 파일을 사용하면 복잡한 C# 어셈블리나 스크립트를 사용하지 않고 사용자 지정 세션 구성을 쉽게 설계할 수 있습니다.
"세션 구성" 또는 "끝점"은 로컬 컴퓨터에서 컴퓨터에 세션을 만들 수 있는 사용자와 세션에서 실행할 수 있는 명령을 결정하는 설정의 컬렉션입니다. 세션 구성에 대한 자세한 내용은 about_Session_Configurations(https://go.microsoft.com/fwlink/?LinkID=145152)를 참조하세요.
세션 구성은 Windows PowerShell 2.0에서 도입되었습니다. 세션 구성 파일은 Windows PowerShell 3.0에서 도입되었습니다. 세션 구성 파일을 세션 구성에 포함하려면 Windows PowerShell 3.0을 사용해야 하지만 Windows PowerShell 2.0 이상의 사용자는 세션 구성에 있는 모든 설정의 영향을 받습니다.
사용자 지정 세션 만들기
세션 구성에서 세션 속성을 지정하여 Windows PowerShell 세션의 많은 기능을 사용자 지정할 수 있습니다. 사용자 지정 runspace를 정의하는 C# 프로그램을 작성하여 세션을 사용자 지정하거나, 세션 구성 파일을 사용하여 세션 구성을 사용하여 만든 세션의 속성을 정의할 수 있습니다.
세션 구성 파일을 사용하여 가장 신뢰할 수 있는 사용자를 위한 완벽하게 작동하는 세션, 최소 액세스를 위한 잠긴 세션, 작업에 필요한 모듈만 포함하는 특정 작업용으로 설계된 세션을 만들 수 있습니다.
예를 들어 세션의 사용자가 스크립트 블록과 같은 Windows PowerShell 언어 요소를 사용할 수 있는지 또는 명령만 실행할 수 있는지를 확인할 수 있습니다. 세션에서 실행할 수 있는 Windows PowerShell의 버전, 세션으로 가져오는 모듈, 세션 사용자가 실행할 수 있는 cmdlet, 함수 및 별칭 등을 확인할 수 있습니다.
세션 구성 파일 만들기
New-PSSessionConfiguration cmdlet을 사용하면 세션 구성 파일을 가장 쉽게 만들 수 있습니다. 이 cmdlet은 올바른 구문 및 형식을 사용하여 파일을 생성하고 대부분의 속성 값을 확인합니다.
세션 구성 파일에서 설정할 수 있는 속성에 대한 자세한 설명은 New-PSSessionConfigurationFile cmdlet에 대한 도움말 항목을 참조하세요.
기본값을 사용하여 세션 구성 파일을 만들려면 다음 명령을 사용합니다. 여기에 섹션 본문을 삽입합니다.
PS C:\> New-PSSessionConfigurationFile -Path .\Defaults.pssc
기본 텍스트 편집기에서 파일을 열어 보려면 다음 명령을 사용합니다.
PS C:\> Invoke-Item -Path .\Defaults.pssc
사용자가 명령을 실행할 수 있는 세션에 대한 세션 구성을 만들려면 Windows PowerShell 언어의 다른 요소를 사용하는 대신 다음을 입력합니다.
PS C:\> New-PSSessionConfigurationFile -LanguageMode NoLanguage -Path .\NoLanguage.pssc
사용자가 Get cmdlet만 사용할 수 있는 세션에 대한 세션 구성을 만들려면 다음을 입력합니다.
PS C:\> New-PSSessionConfigurationFile -VisibleCmdlets Get-* -Path .\GetSessions.pssc
세션 구성 파일 사용
세션 구성을 만들 때 세션 구성 파일을 포함하거나 나중에 세션 구성에 추가할 수 있습니다.
세션 구성을 만들 때 세션 구성 파일을 포함하려면 Register-PSSessionConfiguration cmdlet의 Path 매개 변수를 사용합니다.
다음 명령은 NoLanguage 세션 구성을 만들 때 NoLanguage.pssc 파일을 포함합니다.
PS C:\> Register-PSSessionConfiguration -Name NoLanguage -Path .\NoLanguage.pssc
기존 세션 구성에 세션 구성 파일을 추가하려면 Set-PSSessionConfiguration cmdlet의 Path 매개 변수를 사용합니다. 변경 내용은 명령이 완료된 후 세션 구성을 사용하여 만든 모든 새 세션에 적용됩니다.
다음 명령은 LockedDown 세션 구성에 NoLanguage.pssc 파일을 추가합니다.
PS C:\> Set-PSSessionConfiguration -Name LockedDown -Path .\NoLanguage.pssc
사용자가 LockedDown 세션 구성을 사용하여 세션을 만들 때 cmdlet은 실행할 수 있지만 변수를 만들고 사용하거나, 값을 할당하거나, 다른 Windows PowerShell 언어 요소를 사용할 수는 없습니다.
예를 들어 다음 명령은 New-PSSession cmdlet을 사용하여 로컬 컴퓨터에서 LockedDown 세션 구성을 사용하는 세션을 만듭니다. 이 명령은 세션을 $s 변수에 저장합니다. 세션 구성의 ACL은 해당 구성을 사용하여 세션을 만들 수 있는 사용자를 결정합니다.
PS C:\> $s = New-PSSession -ComputerName Srv01 -ConfigurationName LockedDown
다음 명령은 Invoke-Command cmdlet을 사용하여 $s 변수의 세션에 있는 명령을 실행합니다. Get-UICulture cmdlet을 실행하는 첫 번째 명령은 성공합니다. 그러나 $PSUICulture 변수의 값을 가져오는 두 번째 명령은 실패합니다.
PS C:\> Invoke-Command -Session $s {Get-UICulture}
en-US
PS C:\> 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
세션 구성 파일 편집
세션 구성에서 사용되는 세션 구성 파일을 편집하려면 먼저 세션 구성 파일의 활성 복사본을 찾습니다.
세션 구성에서 세션 구성 파일을 사용하는 경우 Windows PowerShell은 세션 구성 파일의 활성 복사본을 만들어 로컬 컴퓨터의 $pshome\SessionConfig 디렉터리에 저장합니다.
세션 구성 파일 활성 복사본의 위치는 세션 구성 개체의 ConfigFilePath 속성에 저장됩니다.
다음 명령은 NoLanguage 세션 구성에 대한 세션 구성 파일의 위치를 가져옵니다.
PS C:\> (Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
파일은 모든 텍스트 편집기에서 편집할 수 있습니다. 파일은 파일을 저장하는 즉시 변경되고 세션 구성을 사용하는 새 세션에 적용됩니다.
세션 구성 파일 테스트
수동으로 편집된 모든 세션 구성 파일을 테스트해야 합니다. 파일 구문 및 값이 유효하지 않으면 사용자가 세션 구성을 사용하여 세션을 만들 수 없습니다.
예를 들어 다음 명령은 NoLanguage 세션 구성의 활성 세션 구성 파일을 테스트합니다.
PS C:\> Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Test-PSSessionConfigurationFile을 사용하여 New-PSSessionConfiguration에서 만드는 파일을 포함하여 모든 세션 구성 파일을 테스트할 수 있습니다. 자세한 내용은 Test-PSSessionConfigurationFile cmdlet에 대한 도움말 항목을 참조하세요.
세션 구성 파일 제거
세션 구성에서 세션 구성 파일을 안전하게 제거할 수는 없지만 영향을 주지 않는 파일로 파일을 바꿀 수 있습니다. 여기에 섹션 본문을 삽입합니다.
세션 구성 파일을 제거하려면 기본 설정을 사용하여 세션 구성 파일을 만든 다음 Set-PSSessionConfiguration cmdlet을 사용하여 사용자 지정 세션 구성 파일을 기본 버전으로 바꿉니다.
예를 들어 다음 명령은 Default 세션 구성 파일을 만든 다음 NoLanguage 세션 구성에서 활성 세션 구성 파일을 바꿉니다.
PS C:\> New-PSSessionConfigurationFile -Path .\Default.pssc
PS C:\> Set-PSSessionConfiguration -Name NoLanguage -Path .\Default.pssc
이 명령의 결과로 NoLanguage 세션 구성은 세션 구성을 사용하여 만든 모든 세션에서 전체 언어 지원(기본값)을 제공합니다.
세션 구성의 속성 보기
세션 구성 파일을 사용하는 세션 구성을 나타내는 세션 구성 개체에는 세션 구성을 쉽게 검색하고 분석할 수 있도록 하는 추가 속성이 있습니다. 형식 이름에는 서식이 지정된 보기 정의가 포함되어야 합니다.
PS C:\> Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands#PSSessionConfiguration
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Architecture NoteProperty System.String Architecture=64
Author NoteProperty System.String Author=juneb
AutoRestart NoteProperty System.String AutoRestart=fals
Capability NoteProperty System.Object[] Capability=Sys
CompanyName NoteProperty System.String CompanyName=Unkn
configfilepath NoteProperty System.String configfilepath=C
Copyright NoteProperty System.String Copyright=(c) 20
Enabled NoteProperty System.String Enabled=True
ExactMatch NoteProperty System.String ExactMatch=true
ExecutionPolicy NoteProperty System.String ExecutionPolicy=
Filename NoteProperty System.String Filename=%windir
GUID NoteProperty System.String GUID=0c115179-ff
ProcessIdleTimeoutSec NoteProperty System.String ProcessIdleTimeo
IdleTimeoutms NoteProperty System.String IdleTimeoutms=72
lang NoteProperty System.String lang=en-US
LanguageMode NoteProperty System.String LanguageMode=NoL
MaxConcurrentCommandsPerShell NoteProperty System.String MaxConcurrentCom
MaxConcurrentUsers NoteProperty System.String MaxConcurrentUse
MaxIdleTimeoutms NoteProperty System.String MaxIdleTimeoutms
MaxMemoryPerShellMB NoteProperty System.String MaxMemoryPerShel
MaxProcessesPerShell NoteProperty System.String MaxProcessesPerS
MaxShells NoteProperty System.String MaxShells=300
MaxShellsPerUser NoteProperty System.String MaxShellsPerUser
Name NoteProperty System.String Name=NoLanguage
PSVersion NoteProperty System.String PSVersion=3.0
ResourceUri NoteProperty System.String ResourceUri=http
RunAsPassword NoteProperty System.String RunAsPassword=
RunAsUser NoteProperty System.String RunAsUser=
SchemaVersion NoteProperty System.String SchemaVersion=1.
SDKVersion NoteProperty System.String SDKVersion=1
OutputBufferingMode NoteProperty System.String OutputBufferingM
SessionType NoteProperty System.String SessionType=Defa
UseSharedProcess NoteProperty System.String UseSharedProcess
SupportsOptions NoteProperty System.String SupportsOptions=
xmlns NoteProperty System.String xmlns=http://sch
XmlRenderingType NoteProperty System.String XmlRenderingType
Permission ScriptProperty System.Object Permission {get=
새 속성을 사용하면 더 쉽게 세션 구성을 검색할 수 있습니다. 예를 들어 ExecutionPolicy 속성을 사용하면 RemoteSigned 실행 정책을 사용하여 세션을 지원하는 세션 구성을 찾을 수 있습니다. ExecutionPolicy 속성은 세션 구성 파일을 사용하는 세션에만 있으므로 이 명령으로 정식 세션 구성을 모두 가져오지 못할 수 있습니다.
PS C:\> Get-PSSessionConfiguration | where {$_.ExecutionPolicy -eq "RemoteSigned"}
다음 명령은 RunAsUser가 Exchange 관리자인 세션 구성을 가져옵니다.
PS C:\> Get-PSSessionConfiguration | where {$_.RunAsUser -eq "Exchange01\Admin01"}
참고
Empty 세션 형식은 선택한 명령으로 사용자 지정 세션을 만들 수 있도록 설계되었습니다. 빈 세션에 모듈, 함수 또는 스크립트를 추가하지 않으면 세션이 식으로 제한되므로 사용하지 못할 수 있습니다.
참고 항목
about_Session_Configurations
New-PSSession
Disable-PSSessionConfiguration
Enable-PSSessionConfiguration
Get-PSSessionConfiguration
New-PSSessionConfigurationFile
Register-PSSessionConfiguration
Set-PSSessionConfiguration
Test-PSSessionConfigurationFile
Unregister-PSSessionConfiguration