PowerShell에서 실험적 기능 사용
PowerShell의 실험적 기능 지원은 PowerShell 또는 PowerShell 모듈의 기존 안정적인 기능과 공존하는 실험적 기능을 위한 메커니즘을 제공합니다.
실험적 기능은 디자인이 완성되지 않은 기능입니다. 이 기능은 사용자가 테스트하고 피드백을 제공할 수 있습니다. 실험적 기능이 완료되면 디자인 변경 내용이 호환성이 손상되는 변경이 됩니다.
주의
변경 내용이 중단될 수 있으므로 실험적 기능은 프로덕션에서 사용할 수 없습니다. 실험적 기능은 공식적으로 지원되지 않습니다. 그러나 피드백 및 버그 보고서에 감사드립니다. GitHub 소스 리포지토리에서 문제를 제출할 수 있습니다.
이러한 기능을 사용하거나 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 about_Experimental_Features 참조하세요.
실험적 기능 수명 주기
Get-ExperimentalFeature cmdlet은 PowerShell에서 사용할 수 있는 모든 실험적 기능을 반환합니다.
실험적 기능은 모듈 또는 PowerShell 엔진에서 제공 될 수 있습니다. 모듈 기반 실험적 기능은 모듈을 가져온 후에만 사용할 수 있습니다. 다음 예제 에서는 PSDesiredStateConfiguration 이 로드되지 않으므로 PSDesiredStateConfiguration.InvokeDscResource
기능을 사용할 수 없습니다.
Get-ExperimentalFeature
Name Enabled Source Description
---- ------- ------ -----------
PSCommandNotFoundSuggestion False PSEngine Recommend potential commands based on fuzzy searc…
PSCommandWithArgs False PSEngine Enable `-CommandWithArgs` parameter for pwsh
PSFeedbackProvider True PSEngine Replace the hard-coded suggestion framework with …
PSLoadAssemblyFromNativeCode False PSEngine Expose an API to allow assembly loading from nati…
PSModuleAutoLoadSkipOfflineFiles True PSEngine Module discovery will skip over files that are ma…
PSSerializeJSONLongEnumAsNumber True PSEngine Serialize enums based on long or ulong as an nume…
PSSubsystemPluginModel True PSEngine A plugin model for registering and un-registering…
Enable-ExperimentalFeature 및 Disable-ExperimentalFeature cmdlet을 사용하여 기능을 사용하거나 사용하지 않도록 설정합니다. 이 변경 내용이 적용되려면 새 PowerShell 세션을 시작해야 합니다. 다음 명령을 실행하여 기능을 사용하도록 설정합니다 PSCommandNotFoundSuggestion
.
Enable-ExperimentalFeature PSCommandNotFoundSuggestion
WARNING: Enabling and disabling experimental features do not take effect until next start
of PowerShell.
실험적 기능이 일반화되면 기능이 이제 PowerShell 엔진 또는 모듈의 일부이므로 더 이상 실험적 기능으로 사용할 수 없습니다. 예를 들어 이 PSAnsiRenderingFileInfo
기능은 PowerShell 7.3에서 주류가 되었습니다. 기능의 기능을 자동으로 가져옵니다.
참고 항목
일부 기능에는 기능에서 원하는 결과를 가져오도록 설정해야 하는 기본 설정 변수와 같은 구성 요구 사항이 있습니다.
실험적 기능이 중단되면 PowerShell에서 해당 기능을 더 이상 사용할 수 없습니다. 예를 들어 이 PSNativePSPathResolution
기능은 PowerShell 7.3에서 중단되었습니다.
사용 가능한 기능
이 문서에서는 사용 가능한 실험적 기능과 이 기능을 사용하는 방법을 설명합니다.
범례
- 이 아이콘은
PowerShell 버전에서 실험적 기능을 사용할 수 있음을 나타냅니다.
- 아이콘은
실험적 기능이 주류가 된 PowerShell 버전을 나타냅니다.
- 아이콘은
실험적 기능이 제거된 PowerShell 버전을 나타냅니다.
PSCommandNotFoundSuggestion
참고 항목
이 기능은 PowerShell 7.5-preview.5에서 주류가 되었습니다.
CommandNotFoundException 다음에 유사 일치 검색을 기반으로 가능한 명령을 추천합니다.
PS> get
get: The term 'get' isn't recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify
that the path is correct and try again.
Suggestion [4,General]: The most similar commands are: set, del, ft, gal, gbp, gc, gci,
gcm, gdr, gcs.
PSCommandWithArgs
참고 항목
이 기능은 PowerShell 7.5-preview.5에서 주류가 되었습니다.
이 기능은 에 대한 -CommandWithArgs
매개 변수를 pwsh
사용하도록 설정합니다. 이 매개 변수를 사용하면 인수를 사용하여 PowerShell 명령을 실행할 수 있습니다. 이와 달리 -Command
이 매개 변수는 $args
명령에서 사용할 수 있는 기본 제공 변수를 채웁니다.
첫 번째 문자열은 명령이고 공백으로 구분된 후속 문자열은 인수입니다.
예시:
pwsh -CommandWithArgs '$args | % { "arg: $_" }' arg1 arg2
이 예제는 다음과 같은 출력을 생성합니다.
arg: arg1
arg: arg2
이 기능은 PowerShell 7.4-preview.2에 추가되었습니다.
PSDesiredStateConfiguration.InvokeDscResource
비 Windows 시스템에서 MOF에 대한 컴파일을 사용하도록 설정하고 LCM 없이 사용할 Invoke-DSCResource
수 있습니다.
PowerShell 7.2부터 PSDesiredStateConfiguration 모듈이 제거되었으며 이 기능은 기본적으로 사용하지 않도록 설정됩니다. 이 기능을 사용하려면 PowerShell 갤러리 PSDesiredStateConfiguration v2.0.5 모듈을 설치하고 기능을 사용하도록 설정해야 합니다.
DSC v3에는 이 실험적 기능이 없습니다. DSC v3은 Invoke-DSCResource
만 지원하며 MOF 컴파일을 사용하거나 지원하지 않습니다. 자세한 내용은 PowerShell Desired State Configuration v3을 참조하세요.
PSFeedbackProvider
이 기능을 사용하도록 설정하면 PowerShell은 새 피드백 공급자를 사용하여 명령을 찾을 수 없는 경우 피드백을 제공합니다. 피드백 공급자는 확장 가능하며 타사 모듈에서 구현할 수 있습니다. 피드백 공급자는 예측 IntelliSense 결과를 제공하기 위해 예측기 하위 시스템 같은 다른 하위 시스템에 의해 사용될 수 있습니다.
이 기능에는 다음과 같은 두 가지 기본 제공 피드백 공급자가 포함됩니다.
GeneralCommandErrorFeedback 은 현재 기존과 동일한 제안 기능을 제공합니다.
Linux에서 사용할 수 있는 UnixCommandNotFound는 bash와 유사한 피드백을 제공합니다.
UnixCommandNotFound는 피드백 공급자 및 예측자 역할을 합니다. 명령에서 찾을 수 없는 명령의 제안은 대화형 실행에서 명령을 찾을 수 없는 경우 피드백을 제공하고 다음 명령줄에 대한 예측 IntelliSense 결과를 제공하는 데 사용됩니다.
이 기능은 PowerShell 7.4-preview.3에 추가되었습니다.
PSLoadAssemblyFromNativeCode
네이티브 코드에서 어셈블리 로드를 허용하는 API를 노출합니다.
PSModuleAutoLoadSkipOfflineFiles
참고 항목
이 기능은 PowerShell 7.5-preview.5에서 주류가 되었습니다.
이 기능을 사용하도록 설정하면 사용자의 PSModulePath에 OneDrive와 같은 클라우드 공급자의 폴더가 포함된 경우 PowerShell은 더 이상 해당 폴더 내에 포함된 모든 파일의 다운로드를 트리거하지 않습니다. 다운로드되지 않은 것으로 표시된 모든 파일은 건너뜁니다. 클라우드 공급자를 사용하여 컴퓨터 간에 모듈을 동기화하는 사용자는 모듈 폴더를 고정됨으로 표시하거나 또는 OneDrive 이외의 공급자에 대해 이와 동등한 상태로 표시해야 합니다. 모듈 폴더를 고정됨으로 표시하면 파일이 항상 디스크에 보관됩니다.
이 기능은 PowerShell 7.4-preview.1에 추가되었습니다.
PSRedirectToVariable
참고 항목
이 실험적 기능은 PowerShell 7.5-preview.4에 추가되었습니다.
이 기능을 사용하도록 설정하면 변수 드라이브로 리디렉션할 수 있는 지원이 추가됩니다. 이 기능을 사용하면 구문을 사용하여 variable:name
데이터를 변수로 리디렉션할 수 있습니다. PowerShell은 리디렉션의 대상을 검사하고 호출하는 변수 공급자를 사용하는 경우 대신 Set-Variable
호출 Out-File
합니다.
다음 예제에서는 명령의 출력을 변수로 리디렉션하는 방법을 보여줍니다.
. {
"Output 1"
Write-Warning "Warning, Warning!"
"Output 2"
} 3> variable:warnings
$warnings
Output 1
Output 2
WARNING: Warning, Warning!
PSSubsystemPluginModel
이 기능을 사용하면 PowerShell에서 하위 시스템 플러그 인 모델을 사용할 수 있습니다. 이 기능을 사용하면 구성 요소를 System.Management.Automation.dll
자체 어셈블리에 상주하는 개별 하위 시스템으로 구분할 수 있습니다. 이렇게 분리하면 핵심 PowerShell 엔진의 디스크 공간이 줄어들고 이러한 구성 요소가 최소한의 PowerShell 설치를 위한 선택적 기능이 될 수 있습니다.
현재 CommandPredictor 하위 시스템만 지원됩니다. 이 하위 시스템은 PSReadLine 모듈과 함께 사용자 지정 예측 플러그 인을 제공하는 데 사용됩니다. 나중에 작업, CommandCompleter, Remoting 및 기타 구성 요소를 외부의 System.Management.Automation.dll
하위 시스템 어셈블리로 구분할 수 있습니다.
실험적 기능에는 새 cmdlet인 Get-PSSubsystem이 포함됩니다. 이 cmdlet은 기능을 사용하도록 설정한 경우에만 사용할 수 있습니다. 이 cmdlet은 시스템에서 사용할 수 있는 하위 시스템에 대한 정보를 반환합니다.
PSNativeWindowsTildeExpansion
이 기능을 사용하도록 설정하면 PowerShell은 네이티브 명령을 호출하기 전에 따옴표 없는 타일(~
)을 사용자의 현재 홈 폴더로 확장합니다. 다음 예제에서는 기능의 작동 방식을 보여 줍니다.
기능을 사용하지 않도록 설정하면 타일이 네이티브 명령에 리터럴 문자열로 전달됩니다.
PS> cmd.exe /c echo ~
~
이 기능을 사용하도록 설정하면 PowerShell은 네이티브 명령에 전달되기 전에 타일을 확장합니다.
PS> cmd.exe /c echo ~
C:\Users\username
이 기능은 Windows에만 적용됩니다. Windows가 아닌 플랫폼에서는 타일 확장이 기본적으로 처리됩니다.
이 기능은 PowerShell 7.5-preview.2에 추가되었습니다.
PSSerializeJSONLongEnumAsNumber
이 기능을 사용하면 cmdlet ConvertTo-Json 이 열거형 값을 열거형 값의 문자열 표현이 아닌 숫자 값으로 Int64/long
직렬화할 UInt64/ulong
수 있습니다. 이렇게 하면 cmdlet이 열거형을 숫자 값으로 serialize하는 다른 열거형 기본 형식과 열거형 serialization 동작이 정렬됩니다.
EnumsAsStrings 매개 변수를 사용하여 문자열 표현으로 serialize합니다.
예시:
# PSSerializeJSONLongEnumAsNumber disabled
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json
# { "Key": "Cmdlets" }
# PSSerializeJSONLongEnumAsNumber enabled
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json
# { "Key": 32 }
# -EnumsAsStrings to revert back to the old behaviour
@{
Key = [System.Management.Automation.Tracing.PowerShellTraceKeywords]::Cmdlets
} | ConvertTo-Json -EnumsAsStrings
# { "Key": "Cmdlets" }
PowerShell