다음을 통해 공유


about_PowerShell_Config

간단한 설명

PowerShell에 대한 구성 파일로 레지스트리 구성을 대체합니다.

자세한 설명

파일에는 powershell.config.json PowerShell에 대한 구성 설정이 포함되어 있습니다. PowerShell은 시작 시 이 구성을 로드합니다. 런타임에 설정을 수정할 수도 있습니다. 이전에는 이러한 설정이 PowerShell용 Windows 레지스트리에 저장되었지만 이제는 macOS 및 Linux에서 구성을 사용하도록 설정하기 위해 파일에 포함되었습니다.

설정 요약

파일에는 powershell.config.json 다음 키가 포함될 수 있습니다.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

모든 키가 모든 플랫폼에 적용되는 것은 아닙니다. 키에는 PowerShellPolicies 창 그룹 정책에서 관리하는 설정을 미러링하는 하위 키가 포함되어 있습니다. 이러한 하위 키는 JSON 파일의 루트 수준에서 정의된 경우 모든 플랫폼에도 적용됩니다.

Warning

구성 파일에서 인식할 수 없는 키 또는 잘못된 값은 무시됩니다. powershell.config.json 파일에 잘못된 JSON이 포함되어 있으면 PowerShell에서 대화형 세션을 시작할 수 없습니다. 이 경우 구성 파일을 수정해야 합니다.

구성 범위

구성 설정은 모든 사용자 또는 개별 사용자 수준에서 정의할 수 있습니다.

AllUsers(공유) 구성

디렉터리의 파일 $PSHOMEpowershell.config.json 해당 PowerShell 설치에서 실행되는 모든 PowerShell 세션에 대한 구성을 정의합니다.

참고 항목

위치는 $PSHOME 실행 중인 System.Management.Automation.dll 어셈블리와 동일한 디렉터리로 정의됩니다. 호스트된 PowerShell SDK 인스턴스에도 적용됩니다.

CurrentUser(사용자별) 구성

사용자 범위 구성 디렉터리에 파일을 배치하여 사용자 단위로 PowerShell을 구성할 수도 있습니다. 명령을 Split-Path $PROFILE.CurrentUserCurrentHost사용하여 플랫폼 간에 사용자 구성 디렉터리를 찾을 수 있습니다.

범위 우선 순위

Windows에서는 Windows 그룹 정책에서 관리하는 설정이 구성 파일의 설정보다 우선합니다. 그룹 정책은 비 Windows 플랫폼에 존재하지 않습니다.

그룹 정책 이후 AllUsers 수준에서 정의된 설정이 CurrentUser 수준에 대해 정의된 설정보다 우선합니다.

Windows 관련 설정

다음 설정은 Windows 플랫폼에만 적용됩니다.

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExecutionPolicy
  • PowerShellPolicies

DisableImplicitWinCompat

이 설정으로 true설정하면 Windows PowerShell 호환성 기능이 비활성화됩니다. Windows PowerShell 호환성을 사용하면 PowerShell 7에서 Windows PowerShell 5.1 모듈을 호환 모드로 로드할 수 있습니다.

자세한 내용은 about_Windows_PowerShell_Compatibility 참조하세요.

WindowsPowerShellCompatibilityModuleDenyList

이 설정은 Windows PowerShell 호환성 기능 참여에서 제외하려는 모듈 이름의 배열입니다.

자세한 내용은 about_Windows_PowerShell_Compatibility 참조하세요.

WindowsPowerShellCompatibilityNoClobberModuleList

이 설정은 Windows PowerShell 5.1 버전의 모듈을 로드하여 방해해서는 안 되는 모듈 이름의 배열입니다.

자세한 내용은 about_Windows_PowerShell_Compatibility 참조하세요.

ExecutionPolicy

Important

이 구성은 Windows 플랫폼에만 적용됩니다.

실행할 수 있는 스크립트를 결정하여 PowerShell 세션에 대한 실행 정책을 구성합니다. 기본적으로 PowerShell은 기존 실행 정책을 사용합니다.

AllUsers 구성의 경우 LocalMachine 실행 정책을 설정합니다. CurrentUser 구성의 경우 CurrentUser 실행 정책을 설정합니다.

다음 예제에서는 PowerShell의 실행 정책을 .로 RemoteSigned설정합니다.

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}

자세한 내용은 about_Execution_Policies를 참조하세요.

PowerShellPolicies

Windows에는 그룹 정책에서 관리할 수 있는 몇 가지 설정이 있습니다. 일반적으로 이러한 설정은 Windows 레지스트리에 저장됩니다. 이러한 설정은 파일에서도 powershell.config.json 정의할 수 있습니다.

다양한 PowerShellPolicies 정책 설정에 대한 키-값 쌍을 포함하는 JSON 개체입니다. 이러한 정책 설정은 개체 외부 PowerShellPolicies 의 JSON 파일 루트 수준에 나열될 수도 있습니다. 이 설정에는 다음 하위 키가 포함될 수 있습니다.

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

ScriptExecution 설정은 PowerShell 실행 정책을 설정하는 데 사용됩니다. 이는 위에서 설명한 ExecutionPolicy 설정보다 우선합니다.

예시:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

다른 정책 설정에 대한 설명은 일반 구성 설정 섹션의 설명을 참조하세요.

Windows에서 PowerShell은 레지스트리의 설정을 찾습니다. 레지스트리에 있는 모든 설정이 우선합니다. 다음으로 PowerShell은 JSON 구성을 읽습니다. 레지스트리에 정의되지 않은 모든 PowerShellPolicies설정은 JSON 구성의 루트 수준에서 찾은 설정보다 우선합니다.

자세한 내용은 about_Group_Policy_Settings를 참조하세요.

비 Windows 플랫폼에 대한 설정

다음 설정은 Linux 및 macOS 플랫폼에만 적용됩니다.

다음 키는 Linux 및 macOS에 대한 PowerShell의 로깅을 구성하는 데 사용됩니다.

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

비 Windows 시스템에 대한 PowerShell 로깅에 대한 자세한 내용은 about_Logging_Non-Windows를 참조 하세요.

일반적인 구성 설정

다음 설정은 지원되는 모든 플랫폼에서 사용할 수 있습니다.

  • ConsoleSessionConfiguration
  • ExperimentalFeatures
  • ModuleLogging
  • ProtectedEventLogging
  • PSModulePath
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

ConsoleSessionConfiguration

이 설정은 모든 PowerShell 세션에 사용할 세션 구성을 지정합니다. 기본 PowerShell 원격 엔드포인트 또는 특정 사용자 역할 기능이 있는 사용자 지정 엔드포인트를 포함하여 로컬 컴퓨터에 등록된 모든 엔드포인트일 수 있습니다.

이 키에는 다음 두 개의 하위 키가 포함됩니다.

  • EnableConsoleSessionConfiguration - 세션 구성을 사용하도록 설정하려면 값을 true.로 설정합니다. 이 값은 기본적으로 false입니다.

  • ConsoleSessionConfigurationName - PowerShell이 실행되는 구성 엔드포인트의 이름을 지정합니다. 기본적으로 정의된 세션은 없습니다.

{
  "ConsoleSessionConfiguration": {
    "EnableConsoleSessionConfiguration": false,
    "ConsoleSessionConfigurationName" : []
  }
}

자세한 내용은 about_Session_Configurations 참조하세요.

ExperimentalFeatures

PowerShell에서 사용하도록 설정할 실험적 기능의 이름입니다. 기본값은 빈 배열입니다.

다음 예제에서는 PowerShell이 시작될 때 PSCommandNotFoundSuggestionPSSubsystemPluginModel 실험적 기능을 사용하도록 설정합니다.

예시:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

실험적 기능에 대한 자세한 내용은 실험적 기능 사용을 참조 하세요.

ModuleLogging

이 설정은 PowerShell 모듈에 대한 로깅 동작을 제어합니다. 설정에는 다음 두 개의 하위 키가 포함됩니다.

  • EnableModuleLogging - 모듈 로깅을 사용하도록 설정하려면 값을 .로깅으로 true설정합니다. 사용하도록 설정하면 지정된 모듈의 멤버에 대한 파이프라인 실행 이벤트가 PowerShell 로그 파일에 기록됩니다.
  • ModuleNames - 기록해야 하는 모듈의 이름을 지정합니다.

예시:

{
  "ModuleLogging": {
    "EnableModuleLogging": true,
    "ModuleNames" : [
        "PSReadLine",
        "PowerShellGet"
    ]
  }
}

ProtectedEventLogging

이 설정을 통해 보호된 이벤트 로깅을 구성할 수 있습니다. 설정에는 다음 두 개의 하위 키가 포함됩니다.

  • EnableProtectedEventLogging - 이 정책 설정을 사용하도록 설정하면 해당 정책 설정을 지원하는 구성 요소는 로그에 쓰기 전에 제공한 인증서를 사용하여 로그 데이터를 암호화합니다. 데이터는 CMS(암호화 메시지 구문) 표준을 사용하여 암호화됩니다. 인증서의 프라이빗 키에 액세스할 수 있는 경우 암호화된 메시지의 암호를 해독하는 데 사용할 Unprotect-CmsMessage 수 있습니다.
  • EncryptionCertificate - 암호화에 사용할 인증서의 이름 목록을 제공합니다.

예시:

{
  "ProtectedEventLogging": {
    "EnableProtectedEventLogging": false,
    "EncryptionCertificate": [
      "Joe"
    ]
  }
}

PSModulePath

이 PowerShell 세션에 대한 설정을 재정의 PSModulePath 합니다. 현재 사용자에 대한 구성인 경우 CurrentUser 모듈 경로를 설정합니다. 모든 사용자에 대한 구성인 경우 AllUsers 모듈 경로를 설정합니다.

Warning

여기서 AllUsers 또는 CurrentUser 모듈 경로를 구성해도 Install-Module과 같은 PowerShellGet cmdlet의 범위가 지정된 설치 위치는 변경되지 않습니다. 이러한 cmdlet은 항상 기본 모듈 경로를 사용합니다.

값이 설정되지 않은 경우 PowerShell은 해당 모듈 경로 설정에 기본값을 사용합니다. 이러한 기본값에 대한 자세한 내용은 about_PSModulePath 참조하세요.

이 설정을 사용하면 Windows Command Shell에서 허용하는 것과 동일한 방식으로 문자 "%HOME%\Documents\PowerShell\Modules"사이에 % 환경 변수를 포함시켜 사용할 수 있습니다. 이 구문은 Linux 및 macOS에도 적용됩니다. 예제는 아래를 참조하세요.

이 예제에서는 Windows 환경에 대한 구성을 보여 PSModulePath 줍니다.

{
  "PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}

이 예제에서는 macOS 또는 Linux 환경에 대한 구성을 보여 PSModulePath 줍니다.

{
  "PSModulePath": "/opt/powershell/6/Modules"
}

이 예제에서는 구성에 환경 변수를 포함하는 방법을 보여 줍니다 PSModulePath . 환경 변수 및 디렉터리 구분 기호를 / 사용하여 HOME 이 구문은 Windows, macOS 및 Linux에서 작동합니다.

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

이 예제에서는 macOS 및 Linux에서만 작동하는 환경 변수를 사용합니다.

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

참고 항목

PowerShell 변수는 구성에 PSModulePath 포함할 수 없습니다. PSModulePath Linux 및 macOS의 구성은 대/소문자를 구분합니다. 구성은 PSModulePath 플랫폼에 유효한 디렉터리 구분 기호를 사용해야 합니다. macOS 및 Linux에서 이는 을 의미합니다 /. Windows에서는 둘 다 / 작동 \ 합니다.

ScriptBlockLogging

이 설정은 모든 PowerShell 스크립트 입력의 로깅을 제어합니다. 이 설정에는 다음 두 개의 하위 키가 포함됩니다.

  • EnableScriptBlockLogging - 이 정책 설정을 사용하도록 설정하면 PowerShell은 명령, 스크립트 블록, 함수 및 스크립트의 처리를 대화형으로 호출하든 자동화를 통해 기록합니다.
  • EnableScriptBlockInvocationLogging - 스크립트 블록 시작 및 중지 이벤트의 로깅을 사용하도록 설정합니다.

예시:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

대화 내용 기록

이 정책 설정을 사용하면 텍스트 기반 대본에서 PowerShell 명령의 입력 및 출력을 캡처할 수 있습니다. 이 정책 설정을 사용하면 PowerShell에서 모든 PowerShell 세션에 대한 전사를 사용하도록 설정합니다.

이 설정은 PowerShell에서 전사가 작동하는 방식을 제어합니다. 이 설정에는 다음 세 개의 하위 키가 포함됩니다.

  • EnableTranscripting - 이 설정을 사용하도록 설정하면 PowerShell에서 구성된 위치에 기록 로그 파일을 만듭니다.
  • EnableInvocationHeader - 기본적으로 PowerShell은 기록 로그 파일의 맨 위에 헤더를 포함합니다. 이 설정을 사용하여 헤더를 사용하지 않도록 설정할 수 있습니다.
  • OutputDirectory - 이 설정을 사용하면 기본 위치 대신 중앙 위치에 기록 로그 파일을 수집할 수 있습니다.

예시:

{
    "Transcription": {
        "EnableTranscripting": true,
        "EnableInvocationHeader": true,
        "OutputDirectory": "c:\\tmp"
      }
}

자세한 내용은 시작-대본을 참조 하세요.

UpdatableHelp

이 정책 설정을 사용하면 cmdlet에서 SourcePath 매개 변수의 기본값을 Update-Help 설정할 수 있습니다. SourcePath 매개 변수를 사용하여 다른 값을 지정하여 이 기본값을 재정의할 수 있습니다.

예시:

{
    "UpdatableHelp": {
      "DefaultSourcePath": "f:\\temp"
    }
}