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