간단한 설명
PowerShell에 대한 구성 파일로 레지스트리 구성을 대체합니다.
긴 설명
powershell.config.json 파일에는 PowerShell에 대한 구성 설정이 포함되어 있습니다. PowerShell은 시작 시 이 구성을 로드합니다. 런타임에 설정을 수정할 수도 있습니다. 모든 키가 모든 플랫폼에 적용되는 것은 아닙니다.
경고
구성 파일에서 인식할 수 없는 키 또는 잘못된 값은 무시됩니다.
powershell.config.json 파일에 잘못된 JSON이 포함되어 있으면 PowerShell에서 대화형 세션을 시작할 수 없습니다. 이 경우 구성 파일을 수정해야 합니다.
설정 요약
powershell.config.json 파일에는 다음 키가 포함될 수 있습니다.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListExperimentalFeaturesLogChannelsLogIdentityLogKeywordsLogLevelMicrosoft.PowerShell:ExecutionPolicyPSModulePathPowerShellPoliciesExecutionPolicyConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
구성 범위
구성 설정은 모든 사용자 또는 개별 사용자 수준에서 정의할 수 있습니다.
범위 우선 순위
몇 가지 특수한 경우를 제외하고 CurrentUser 수준에서 정의된 설정이 AllUsers 수준에 대해 정의된 설정보다 우선합니다.
Windows 시스템에서:
- Windows 그룹 정책에서 관리하는 설정이 구성 파일의 설정보다 우선합니다.
- 실행 정책은 범위 수준 설정을 지원합니다.
모든 플랫폼에서:
- 결과 값
$env:PSModulePath은 두 범위에서 키 값의PSModulePath병합입니다.
AllUsers(공유) 구성
powershell.config.json 디렉터리의 $PSHOME 파일은 해당 PowerShell 설치에서 실행되는 모든 PowerShell 세션에 대한 구성을 정의합니다.
메모
$PSHOME 위치는 실행 중인 System.Management.Automation.dll 어셈블리와 동일한 디렉터리로 정의됩니다. 호스트된 PowerShell SDK 인스턴스에도 적용됩니다.
CurrentUser(사용자별) 구성
사용자 범위 구성 디렉터리에 파일을 배치하여 사용자 단위로 PowerShell을 구성할 수도 있습니다. 다음 명령을 사용하여 플랫폼 간에 사용자 구성 디렉터리를 찾을 수 있습니다.
Split-Path $PROFILE.CurrentUserCurrentHost
Windows 관련 설정
다음 설정은 Windows 플랫폼에만 적용됩니다.
DisableImplicitWinCompatWindowsPowerShellCompatibilityModuleDenyListWindowsPowerShellCompatibilityNoClobberModuleListMicrosoft.PowerShell:ExecutionPolicyPowerShellPoliciesScriptExecution
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참조하세요.
Microsoft. PowerShell:ExecutionPolicy
실행할 수 있는 스크립트를 결정하여 PowerShell 세션에 대한 실행 정책을 구성합니다. 기본적으로 PowerShell은 기존 실행 정책을 사용합니다.
AllUsers 구성의 경우 LocalMachine 실행 정책을 설정합니다. CurrentUser 구성의 경우 CurrentUser 실행 정책을 설정합니다.
다음 예제에서는 PowerShell의 실행 정책을 RemoteSigned설정합니다.
{
"Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}
자세한 내용은 about_Execution_Policies참조하세요.
비 Windows 플랫폼에 대한 설정
다음 설정은 Linux 및 macOS 플랫폼에만 적용됩니다.
다음 키를 사용하여 Linux 및 macOS에 대한 PowerShell 로깅을 구성합니다.
LogChannelsLogIdentityLogKeywordsLogLevel
비 Windows 시스템에 대한 PowerShell 로깅에 대한 자세한 내용은 about_Logging_Non-Windows참조하세요.
일반적인 구성 설정
다음 설정은 지원되는 모든 플랫폼에서 사용할 수 있습니다.
ExperimentalFeaturesPSModulePathPowerShellPolicies
ExperimentalFeatures
PowerShell에서 사용하도록 설정할 실험적 기능의 이름입니다. 기본값은 빈 배열입니다.
다음 예제에서는 PowerShell이 시작될 때 PSCommandNotFoundSuggestion 및 PSSubsystemPluginModel 실험적 기능을 사용하도록 설정합니다.
본보기:
{
"ExperimentalFeatures": [
"PSCommandNotFoundSuggestion",
"PSSubsystemPluginModel"
]
}
실험적 기능에 대한 자세한 내용은 실험적 기능 사용참조하세요.
PSModulePath
이 PowerShell 세션에 대한 PSModulePath 설정을 재정의합니다. 현재 사용자에 대한 구성인 경우 CurrentUser 모듈 경로를 설정합니다. 모든 사용자에 대한 구성인 경우 AllUsers 모듈 경로를 설정합니다.
경고
여기에서 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\\7\\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 구성에 포함할 수 없습니다.
Linux 및 macOS의 PSModulePath 구성은 대/소문자를 구분합니다.
PSModulePath 구성은 플랫폼에 유효한 디렉터리 구분 기호를 사용해야 합니다. macOS 및 Linux에서는 /의미합니다. Windows에서는 / 및 \ 모두 작동합니다.
PowerShellPolicies
다양한 PowerShellPolicies 설정에 대한 키-값 쌍을 포함하는 JSON 개체입니다. 설정을 제외하고 모든 설정은 ScriptExecution Windows, Linux 및 macOS 플랫폼에서 사용할 수 있습니다.
PowerShellPolicies 에는 다음 하위 키가 포함됩니다.
ConsoleSessionConfigurationModuleLoggingProtectedEventLoggingScriptBlockLoggingScriptExecutionTranscriptionUpdatableHelp
Windows 이러한 설정은 Windows 그룹 정책에서 관리할 수 있습니다. 그룹 정책 설정이 우선합니다. 그룹 정책에 의해 값이 설정되지 않은 경우 PowerShell은 JSON 파일의 값을 범위 우선 순위 순서로 적용합니다.
그룹 정책은 Windows 시스템에서 이러한 설정을 관리하는 권장 방법입니다. 자세한 내용은 about_Group_Policy_Settings참조하세요.
ConsoleSessionConfiguration
이 설정은 모든 PowerShell 세션에 사용할 세션 구성을 지정합니다. 기본 PowerShell 원격 엔드포인트 또는 특정 사용자 역할 기능이 있는 사용자 지정 엔드포인트를 포함하여 로컬 컴퓨터에 등록된 모든 엔드포인트일 수 있습니다.
이 키에는 다음 두 개의 하위 키가 포함됩니다.
EnableConsoleSessionConfiguration- 세션 구성을 사용하도록 설정하려면 값을true. 기본적으로 이 값은false.ConsoleSessionConfigurationName- PowerShell이 실행되는 구성 엔드포인트의 이름을 지정합니다. 기본적으로 정의된 세션은 없습니다.
{
"ConsoleSessionConfiguration": {
"EnableConsoleSessionConfiguration": false,
"ConsoleSessionConfigurationName" : []
}
}
자세한 내용은 about_Session_Configurations참조하세요.
ModuleLogging
이 설정은 PowerShell 모듈에 대한 로깅 동작을 제어합니다. 설정에는 다음 두 개의 하위 키가 포함됩니다.
-
EnableModuleLogging- 모듈 로깅을 사용하도록 설정하려면 값을true. 사용하도록 설정하면 지정된 모듈의 멤버에 대한 파이프라인 실행 이벤트가 PowerShell 로그 파일에 기록됩니다. -
ModuleNames- 기록해야 하는 모듈의 이름을 지정합니다.
본보기:
{
"ModuleLogging": {
"EnableModuleLogging": true,
"ModuleNames" : [
"PSReadLine",
"PowerShellGet"
]
}
}
ProtectedEventLogging
이 설정을 통해 보호된 이벤트 로깅을 구성할 수 있습니다. 설정에는 다음 두 개의 하위 키가 포함됩니다.
-
EnableProtectedEventLogging- 이 정책 설정을 사용하도록 설정하면 이를 지원하는 구성 요소는 로그에 쓰기 전에 제공한 인증서를 사용하여 로그 데이터를 암호화합니다. 데이터는 CMS(암호화 메시지 구문) 표준을 사용하여 암호화됩니다. 인증서의 프라이빗 키에 액세스할 수 있는 경우Unprotect-CmsMessage사용하여 암호화된 메시지의 암호를 해독할 수 있습니다. -
EncryptionCertificate- 암호화에 사용할 인증서의 이름 목록을 제공합니다.
본보기:
{
"ProtectedEventLogging": {
"EnableProtectedEventLogging": false,
"EncryptionCertificate": [
"Joe"
]
}
}
ScriptBlockLogging
이 설정은 모든 PowerShell 스크립트 입력의 로깅을 제어합니다. 이 설정에는 다음 두 개의 하위 키가 포함됩니다.
-
EnableScriptBlockLogging- 이 정책 설정을 사용하도록 설정하면 PowerShell은 명령, scriptblock, 함수 및 스크립트의 처리를 대화형으로 호출하든 자동화를 통해 호출하는지 기록합니다. -
EnableScriptBlockInvocationLogging- scriptblock 시작 및 중지 이벤트의 로깅을 사용하도록 설정합니다.
본보기:
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": false
}
ScriptExecution
ScriptExecution 설정은 PowerShell 실행 정책을 설정하는 데 사용됩니다.
이는 앞에서 설명한 Microsoft.PowrShell:ExecutionPolicy 설정보다 우선합니다.
본보기:
{
"PowerShellPolicies": {
"ScriptExecution": {
"ExecutionPolicy": "RemoteSigned"
}
}
}
메모
Windows 전용 설정입니다.
전사
이 정책 설정을 사용하면 텍스트 기반 대본에서 PowerShell 명령의 입력 및 출력을 캡처할 수 있습니다. 이 정책 설정을 사용하면 PowerShell에서 모든 PowerShell 세션에 대한 전사를 사용하도록 설정합니다.
이 설정은 PowerShell에서 전사가 작동하는 방식을 제어합니다. 이 설정에는 다음 세 개의 하위 키가 포함됩니다.
-
EnableTranscripting- 이 설정을 사용하도록 설정하면 PowerShell은 구성된 위치에 기록 로그 파일을 만듭니다. -
EnableInvocationHeader- 기본적으로 PowerShell은 기록 로그 파일의 맨 위에 헤더를 포함합니다. 이 설정을 사용하여 헤더를 사용하지 않도록 설정할 수 있습니다. -
OutputDirectory- 이 설정을 사용하면 기본 위치 대신 중앙 위치에서 전사 로그 파일을 수집할 수 있습니다.
본보기:
{
"Transcription": {
"EnableTranscripting": true,
"EnableInvocationHeader": true,
"OutputDirectory": "C:\\tmp"
}
}
자세한 내용은 시작-대본참조하세요.
UpdatableHelp
이 정책 설정을 사용하면 cmdlet에서 Update-Help 매개 변수의 기본값을 설정할 수 있습니다. 이 기본값은 SourcePath 매개 변수를 사용하여 다른 값을 지정하여 재정의할 수 있습니다.
본보기:
{
"UpdatableHelp": {
"DefaultSourcePath": "F:\\temp"
}
}
PowerShell