PowerShell Core 6.0의 새로운 기능What's New in PowerShell Core 6.0

PowerShell Core 6.0은 PowerShell의 새로운 버전으로, 크로스 플랫폼(Windows, macOS 및 Linux)이자 오픈 소스이며 다른 유형의 환경 및 하이브리드 클라우드용으로 빌드되었습니다.PowerShell Core 6.0 is a new edition of PowerShell that is cross-platform (Windows, macOS, and Linux), open-source, and built for heterogeneous environments and the hybrid cloud.

.NET Framework에서 .NET Core로 이동됨Moved from .NET Framework to .NET Core

PowerShell Core는 .NET Core 2.0을 런타임으로 사용합니다.PowerShell Core uses .NET Core 2.0 as its runtime. .NET Core 2.0을 사용하면 PowerShell Core가 여러 플랫폼(Windows, macOS 및 Linux)에서 작동할 수 있습니다..NET Core 2.0 enables PowerShell Core to work on multiple platforms (Windows, macOS, and Linux). 또한 PowerShell Core는 PowerShell cmdlet 및 스크립트에서 사용하도록 .NET Core 2.0에서 제공하는 API 집합을 노출합니다.PowerShell Core also exposes the API set offered by .NET Core 2.0 to be used in PowerShell cmdlets and scripts.

Windows PowerShell은 .NET Framework 런타임을 사용하여 PowerShell 엔진을 호스팅합니다.Windows PowerShell used the .NET Framework runtime to host the PowerShell engine. 즉, Windows PowerShell은 .NET Framework에서 제공하는 API 집합을 노출합니다.This means that Windows PowerShell exposes the API set offered by .NET Framework.

.NET Core와 .NET Framework 간에서 공유된 API는 .NET Standard의 일부로 정의됩니다.The APIs shared between .NET Core and .NET Framework are defined as part of .NET Standard.

이것이 PowerShell Core와 Windows PowerShell 간의 모듈/스크립트 호환성에 미치는 영향에 대한 자세한 내용은 Windows PowerShell 이전 버전과의 호환성.For more information on how this affects module/script compatibility between PowerShell Core and Windows PowerShell, see Backwards compatibility with Windows PowerShell.

macOS 및 Linux 지원Support for macOS and Linux

PowerShell은 이제 다음을 포함하여 공식적으로 macOS 및 Linux를 지원합니다.PowerShell now officially supports macOS and Linux, including:

  • Windows 7, 8.1, 10Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012 R2, 2016Windows Server 2008 R2, 2012 R2, 2016
  • Windows 서버 반기 채널Windows Server Semi-Annual Channel
  • Ubuntu 14.04, 16.04, 17.04Ubuntu 14.04, 16.04, and 17.04
  • Debian 8.7+, 9Debian 8.7+, and 9
  • CentOS 7CentOS 7
  • Red Hat Enterprise Linux 7Red Hat Enterprise Linux 7
  • OpenSUSE 42.2OpenSUSE 42.2
  • Fedora 25, 26Fedora 25, 26
  • macOS 10.12+macOS 10.12+

또한 커뮤니티에서 다음 플랫폼과 관련한 패키지를 제공하였으나 공식적으로 지원되지는 않습니다.Our community has also contributed packages for the following platforms, but they are not officially supported:

  • Arch LinuxArch Linux
  • Kali LinuxKali Linux
  • AppImage(여러 Linux 플랫폼에서 사용)AppImage (works on multiple Linux platforms)

또한 다음 플랫폼에 대해 실험적(지원되지 않는) 릴리스도 있습니다.We also have experimental (unsupported) releases for the following platforms:

  • Windows on ARM32/ARM64Windows on ARM32/ARM64
  • Raspbian(Stretch)Raspbian (Stretch)

비 Windows 시스템에서 잘 작동하도록 PowerShell Core 6.0에서 여러 가지가 변경되었습니다.A number of changes were made to in PowerShell Core 6.0 to make it work better on non-Windows systems. 이들 중 일부는 Windows에 영향을 주는 주요 변경 내용입니다.Some of these are breaking changes, which also affect Windows. 다른 변경 사항은 비 Windows에 PowerShell Core가 설치된 경우에만 제공되거나 적용할 수 있습니다.Others are only present or applicable in non-Windows installations of PowerShell Core.

  • Unix 플랫폼에서 기본 명령 와일드 카드 사용 지원이 추가되었습니다.Added support for native command globbing on Unix platforms.
  • more 기능은 Linux $PAGER를 따르며 기본값은 less입니다.The more functionality respects the Linux $PAGER and defaults to less. 즉, 네이티브 바이너리/명령(예: ls *.txt)과 함께 와일드 카드를 사용할 수 있습니다.This means you can now use wildcards with native binaries/commands (for example, ls *.txt). (#3463)(#3463)
  • 네이티브 명령 인수를 처리할 때 후행 백슬래시가 자동으로 이스케이프됩니다.Trailing backslash is automatically escaped when dealing with native command arguments. (#4965)(#4965)
  • 현재 스크립트 서명이 지원되지 않기 때문에 Windows 이외의 플랫폼에서 PowerShell을 실행할 때 -ExecutionPolicy 스위치를 무시합니다.Ignore the -ExecutionPolicy switch when running PowerShell on non-Windows platforms because script signing is not currently supported. (#3481)(#3481)
  • Unix 플랫폼에서 NoEcho를 지원하기 위해 ConsoleHost가 수정되었습니다.Fixed ConsoleHost to honor NoEcho on Unix platforms. (#3801)(#3801)
  • Unix 플랫폼에서 대/소문자를 구분하지 않는 패턴 일치를 지원하도록 Get-Help가 수정되었습니다.Fixed Get-Help to support case insensitive pattern matching on Unix platforms. (#3852)(#3852)
  • 패키지에 powershell man-page 추가됨powershell man-page added to package

로깅Logging

macOS에서 PowerShell은 기본 os_log API를 사용하여 Apple의 통합 로깅 시스템에 로깅합니다.On macOS, PowerShell uses the native os_log APIs to log to Apple's unified logging system. Linux에서 PowerShell은 유비쿼터스 로깅 솔루션인 Syslog를 사용합니다.On Linux, PowerShell uses Syslog, a ubiquitous logging solution.

파일 시스템Filesystem

Windows에서 일반적으로 지원되지 않는 파일 이름 문자를 지원하도록 macOS 및 Linux에서 많은 변경이 이루어졌습니다.A number of changes have been made on macOS and Linux to support filename characters not traditionally supported on Windows:

  • cmdlet에 지정된 경로는 이제 슬래시를 구분하지 않습니다(/ 및 \ 모두 디렉터리 구분 기호로 사용).Paths given to cmdlets are now slash-agnostic (both / and \ work as directory separator)
  • 기본적으로 이제 XDG 기본 디렉터리 지정이 적용되고 사용됩니다.XDG Base Directory Specification is now respected and used by default:
    • Linux/macOS 프로필 경로는 ~/.config/powershell/profile.ps1에 있습니다.The Linux/macOS profile path is located at ~/.config/powershell/profile.ps1
    • 기록 저장 경로는 ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt에 있습니다.The history save path is located at ~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
    • 사용자 모듈 경로는 ~/.local/share/powershell/Modules에 있습니다.The user module path is located at ~/.local/share/powershell/Modules
  • Unix에서 콜론 문자가 포함된 파일 및 폴더 이름을 지원합니다.Support for file and folder names containing the colon character on Unix. (#4959)(#4959)
  • 스크립트 이름이나 콤마가 포함된 전체 경로를 지원합니다.Support for script names or full paths that have commas. (#4136) (@TimCurwick에게 감사드립니다!)(#4136) (Thanks to @TimCurwick!)
  • 탐색 cmdlet의 와일드 카드를 확장하지 않기 위해 -LiteralPath를 사용할 때 검색합니다.Detect when -LiteralPath is used to suppress wildcard expansion for navigation cmdlets. (#5038)(#5038)
  • *nix ls -R 및 Windows DIR /S 네이티브 명령 등을 실행하도록 Get-ChildItem이 업데이트되었습니다.Updated Get-ChildItem to work more like the *nix ls -R and the Windows DIR /S native commands. Get-ChildItem은 재귀 검색 중에 발견된 심볼릭 링크를 반환하고 대상과 연결되는 디렉터리를 검색하지 않습니다.Get-ChildItem now returns the symbolic links encountered during a recursive search and does not search the directories that those links target. (#3780)(#3780)

대/소문자 구분Case sensitivity

Linux와 macOS는 대/소문자를 구분하지만 Windows는 대/소문자를 유지하면서 대/소문자를 구분하지 않습니다.Linux and macOS tend to be case-sensitive while Windows is case-insensitive while preserving case. 일반적으로 PowerShell은 대/소문자를 구분하지 않습니다.In general, PowerShell is case insensitive.

예를 들어, 환경 변수는 macOS 및 Linux에서 대/소문자를 구분하므로 PSModulePath 환경 변수의 대/소문자가 표준화되었습니다.For example, environment variables are case-sensitive on macOS and Linux, so the casing of the PSModulePath environment variable has been standardized. (# 3255) Import-Module은 파일 경로를 사용하여 모듈의 이름을 구분할 때 대/소문자를 구분하지 않습니다.(#3255) Import-Module is case insensitive when it's using a file path to determine the module's name. (#5097)(#5097)

병렬 설치 지원Support for side-by-side installations

PowerShell Core는 Windows PowerShell과 별도로 설치, 구성 및 실행됩니다.PowerShell Core is installed, configured, and executed separately from Windows PowerShell. PowerShell Core에는 "휴대용" ZIP 패키지가 있습니다.PowerShell Core has a "portable" ZIP package. ZIP 패키지를 사용하면 PowerShell을 종속 요소로 사용하는 응용 프로그램에 로컬로 설치하는 등 디스크의 어느 위치에나 원하는 버전을 설치할 수 있습니다.Using the ZIP package, you can install any number of versions anywhere on disk, including local to an application that takes PowerShell as a dependency. 병렬 설치를 통해 새로운 버전의 PowerShell을 쉽게 테스트하고 기존 스크립트를 시간에 따라 마이그레이션할 수 있습니다Side-by-side installation makes it easier to test new versions of PowerShell and migrating existing scripts over time. 병렬 설치는 또한 스크립트가 필요로 하는 특정 버전에 고정될 수 있으므로 이전 버전과의 호환될 수 있습니다.Side-by-side also enables backwards compatibility as scripts can be pinned to specific versions that they require.

참고

기본적으로 Windows의 MSI 기반 설치 관리자는 적절한 업데이트 설치를 수행합니다.By default, the MSI-based installer on Windows does an in-place update install.

powershell(.exe)에서 pwsh(.exe)로 이름이 변경됨Renamed powershell(.exe) to pwsh(.exe)

PowerShell Core의 이진 이름이 powershell(.exe)에서 pwsh(.exe)로 변경되었습니다.The binary name for PowerShell Core has been changed from powershell(.exe) to pwsh(.exe). 이 변경은 사용자가 Windows PowerShell 및 PowerShell Core의 병렬 설치를 지원하는 컴퓨터에서 사용자가 PowerShell Core를 실행할 수 있는 결정적인 방법을 제공합니다.This change provides a deterministic way for users to run PowerShell Core on machines to support side-by-side Windows PowerShell and PowerShell Core installations. pwsh는 또한 훨씬 짧고 쉽게 입력할 수 있습니다.pwsh is also much shorter and easier to type.

powershell.exe에서 pwsh(.exe)로의 추가 변경 사항:Additional changes to pwsh(.exe) from powershell.exe:

  • 첫 번째 위치 매개 변수를 -Command에서 -File로 변경했습니다.Changed the first positional parameter from -Command to -File. 이 변경 사항은 Windows 이외의 플랫폼에서 PowerShell이 아닌 셸에서 실행되는 PowerShell 스크립트에서 #!의 사용(즉, shebang)을 수정합니다.This change fixes the usage of #! (aka as a shebang) in PowerShell scripts that are being executed from non-PowerShell shells on non-Windows platforms. 또한 -File을 지정하지 않고 pwsh foo.ps1 또는 pwsh fooScript와 같은 명령을 실행할 수 있음을 의미합니다.It also means that you can run commands like pwsh foo.ps1 or pwsh fooScript without specifying -File. 그러나 이 변경 사항은 pwsh.exe -Command Get-Command와 같은 명령을 실행하려고 할 때 -c 또는 -Command을 명시적으로 지정해야 합니다.However, this change requires that you explicitly specify -c or -Command when trying to run commands like pwsh.exe -Command Get-Command. (#4019)(#4019)
  • PowerShell Core는 대화형 셸을 나타내기 위해 -i(또는 -Interactive) 스위치를 허용합니다.PowerShell Core accepts the -i (or -Interactive) switch to indicate an interactive shell. (# 3558) 이렇게 하면 Unix 플랫폼에서 PowerShell을 기본 셸로 사용할 수 있습니다.(#3558) This allows PowerShell to be used as a default shell on Unix platforms.
  • pwsh.exe에서 매개 변수 -importsystemmodules-psconsoleFile을 제거했습니다.Removed parameters -importsystemmodules and -psconsoleFile from pwsh.exe. (#4995)(#4995)
  • pwsh -version과 기본 제공 도움말 pwsh.exe이 다른 네이티브 도구와 일치하도록 변경되었습니다.Changed pwsh -version and built-in help for pwsh.exe to align with other native tools. (#4958 & #4931) (@iSazonov에게 감사드립니다!)(#4958 & #4931) (Thanks @iSazonov)
  • -File-Command에 대한 잘못된 인수 오류 메시지 및 Unix 표준과 일치하는 종료 코드 (#4573)Invalid argument error messages for -File and -Command and exit codes consistent with Unix standards (#4573)
  • Windows에 -WindowStyle 매개 변수가 추가되었습니다.Added -WindowStyle parameter on Windows. (# 4573) 마찬가지로 Windows 이외의 플랫폼에서 패키지 기반 설치 업데이트가 적절한 업데이트입니다.(#4573) Similarly, package-based installations updates on non-Windows platforms are in-place updates.

이전 버전 Windows PowerShell과의 호환성Backwards compatibility with Windows PowerShell

PowerShell Core의 목표는 가능한 한 Windows PowerShell과 호환을 유지하는 것입니다.The goal of PowerShell Core is to remain as compatible as possible with Windows PowerShell. PowerShell Core는 .NET Standard 2.0을 사용하여 기존 .NET 어셈블리와 이진 호환성을 제공합니다.PowerShell Core uses .NET Standard 2.0 to provide binary compatibility with existing .NET assemblies. 많은 PowerShell 모듈이 이러한 어셈블리(종종 DLL)에 의존하기 때문에 .NET Standard는 .NET Core를 사용하여 계속 작업할 수 있습니다.Many PowerShell modules depend on these assemblies (often times DLLs), so .NET Standard allows them to continue working with .NET Core. 또한 PowerShell Core에는 일반적으로 전역 어셈블리 캐시가 디스크에 있는 것처럼 잘 알려진 폴더를 검색하여 .NET Framework DLL 종속성을 찾는 추론 기능이 포함되어 있습니다.PowerShell Core also includes a heuristic to look in well-known folders--like where the Global Assembly Cache typically resides on disk--to find .NET Framework DLL dependencies.

.NET Blog, 이 YouTube 비디오 및 GitHub의 이 FAQ에서 .NET Standard에 대해 자세히 알 수 있습니다.You can learn more about .NET Standard on the .NET Blog, in this YouTube video, and via this FAQ on GitHub.

PowerShell 언어와 "기본 제공" 모듈(Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility 등)이 Windows PowerShell에서와 동일하게 작동하도록 최선의 노력이 기울여 왔습니다.Best efforts have been made to ensure that the PowerShell language and "built-in" modules (like Microsoft.PowerShell.Management, Microsoft.PowerShell.Utility, etc.) work the same as they do in Windows PowerShell. 많은 경우 커뮤니티의 도움을 받아 해당 cmdlet에 새로운 기능과 버그 수정이 추가되었습니다.In many cases, with the help of the community, we've added new capabilities and bug fixes to those cmdlets. 경우에 따라 기본 .NET 계층의 종속성이 없어서 기능이 제거되었거나 사용할 수 없습니다.In some cases, due to a missing dependency in underlying .NET layers, functionality was removed or is unavailable.

Windows의 일부로 제공되는 대부분의 모듈(예: DnsClient, Hyper-V, NetTCPIP, Storage 등) 및 Azure 및 Office를 포함한 기타 Microsoft 제품은 명시적으로 .NET Core로 아직 포팅되지 않았습니다.Most of the modules that ship as part of Windows (for example, DnsClient, Hyper-V, NetTCPIP, Storage, etc.) and other Microsoft products including Azure and Office have not been explicitly ported to .NET Core yet. PowerShell 팀은 이러한 제품 그룹 및 팀과 협력하여 기존 모듈의 유효성을 확인하고 PowerShell 코어로 포팅합니다.The PowerShell team is working with these product groups and teams to validate and port their existing modules to PowerShell Core. .NET Standard 및 CDXML을 사용하면 이러한 기존의 Windows PowerShell 모듈 중 상당수가 PowerShell Core에서 작동하는 것처럼 보이지만, 공식적으로 유효성이 검사되지 않았을 뿐만 아니라 공식적으로 지원되지 않습니다.With .NET Standard and CDXML, many of these traditional Windows PowerShell modules do seem to work in PowerShell Core, but they have not been formally validated, and they are not formally supported.

WindowsPSModulePath 모듈을 설치하면 Windows PowerShell PSModulePath을 PowerShell Core PSModulePath에 추가하여 Windows PowerShell 모듈을 사용할 수 있습니다.By installing the WindowsPSModulePath module, you can use Windows PowerShell modules by appending the Windows PowerShell PSModulePath to your PowerShell Core PSModulePath.

먼저 PowerShell 갤러리에서 WindowsPSModulePath 모듈을 설치합니다.First, install the WindowsPSModulePath module from the PowerShell Gallery:

# Add `-Scope CurrentUser` if you're installing as non-admin
Install-Module WindowsPSModulePath -Force

이 모듈이 설치되면, Add-WindowsPSModulePath cmdlet을 실행하여 Windows PowerShell PSModulePath를 PowerShell Core에 추가합니다.After installing this module, run the Add-WindowsPSModulePath cmdlet to add the Windows PowerShell PSModulePath to PowerShell Core:

# Add this line to your profile if you always want Windows PowerShell PSModulePath
Add-WindowsPSModulePath

Docker 지원Docker support

PowerShell Core는 지원하는 모든 주요 플랫폼(여러 Linux 배포판, Windows Server Core 및 Nano 서버 포함)에 대한 Docker 컨테이너 지원을 추가합니다.PowerShell Core adds support for Docker containers for all the major platforms we support (including multiple Linux distros, Windows Server Core, and Nano Server).

전체 목록을 보려면 microsoft/powershellDocker Hub의에 있는 태그를 확인합니다.For a complete list, check out the tags on microsoft/powershell on Docker Hub. Docker 및 PowerShell Core에 대한 자세한 내용은 GitHub의 Docker를 참조하세요.For more information on Docker and PowerShell Core, see Docker on GitHub.

SSH 기반 PowerShell 원격SSH-based PowerShell Remoting

PowerShell Remoting Protocol(PSRP)은 이제 기존 WinRM 기반 PSRP 외에도 Secure Shell(SSH) 프로토콜과도 함께 작동합니다.The PowerShell Remoting Protocol (PSRP) now works with the Secure Shell (SSH) protocol in addition to the traditional WinRM-based PSRP.

즉, Enter-PSSessionNew-PSSession와 같은 cmdlet을 사용하고 SSH를 사용하여 인증할 수 있습니다.This means that you can use cmdlets like Enter-PSSession and New-PSSession and authenticate using SSH. OpenSSH 기반 SSH 서버를 사용하여 PowerShell을 서브 시스템으로 등록하면, 기존의 PSSession 의미 체계와 함께 기존 SSH 기반 인증 메커니즘(암호 또는 개인 키 등)을 사용할 수 있습니다.All you have to do is register PowerShell as a subsystem with an OpenSSH-based SSH server, and you can use your existing SSH-based authenticate mechanisms (like passwords or private keys) with the traditional PSSession semantics.

SSH 기반 원격 구성 및 사용에 대한 자세한 내용은 SSH를 통한 PowerShell 원격을 참조하세요.For more information on configuring and using SSH-based remoting, see PowerShell Remoting over SSH.

New-ModuleManifest를 제외하고는 기본 인코딩은 BOM이 없는 UTF-8Default encoding is UTF-8 without a BOM except for New-ModuleManifest

과거에는 Get-Content, Set-Content와 같은 Windows PowerShell cmdlet에서 ASCII 및 UTF-16 등 다른 인코딩을 사용했습니다.In the past, Windows PowerShell cmdlets like Get-Content, Set-Content used different encodings, such as ASCII and UTF-16. 인코딩 기본값을 변경하면 인코딩을 지정하지 않고 cmdlet을 혼합할 때 문제가 발생했습니다.The variance in encoding defaults created problems when mixing cmdlets without specifying an encoding.

Windows 이외의 플랫폼에서는 텍스트 파일의 기본 인코딩으로 BOM(Byte Order Mark)이 없는 UTF-8을 일반적으로 사용합니다.Non-Windows platforms traditionally use UTF-8 without a Byte Order Mark (BOM) as the default encoding for text files. 점점 많은 Windows 응용 프로그램과 도구가 UTF-16에서 BOM 없는 UTF-8 인코딩으로 이동하고 있습니다.More Windows applications and tools are moving away from UTF-16 and towards BOM-less UTF-8 encoding. PowerShell Core는 보다 넓은 에코시스템을 준수하도록 기본 인코딩을 변경합니다.PowerShell Core changes the default encoding to conform with the broader ecosystems.

즉, -Encoding 매개 변수를 사용하는 모든 기본 제공 cmdlet은 기본적으로 UTF8NoBOM 값을 사용합니다.This means that all built-in cmdlets that use the -Encoding parameter use the UTF8NoBOM value by default. 다음 cmdlet가 이러한 변경에 의해 영향을 받습니다.The following cmdlets are affected by this change:

  • Add-ContentAdd-Content
  • Export-ClixmlExport-Clixml
  • Export-CsvExport-Csv
  • Export-PSSessionExport-PSSession
  • Format-HexFormat-Hex
  • Get-ContentGet-Content
  • Import-CsvImport-Csv
  • Out-FileOut-File
  • Select-StringSelect-String
  • Send-MailMessageSend-MailMessage
  • Set-ContentSet-Content

이러한 cmdlet도 업데이트되어 -Encoding 매개 변수가 보편적으로 System.Text.Encoding을 허용합니다.These cmdlets have also been updated so that the -Encoding parameter universally accepts System.Text.Encoding.

$OutputEncoding의 기본값도 UTF-8로 변경되었습니다.The default value of $OutputEncoding has also been changed to UTF-8.

가장 좋은 방법은 -Encoding 매개 변수를 사용하여 스크립트에서 인코딩을 명시적으로 설정하여 플랫폼 간의 결정적 동작을 생성하는 것입니다.As a best practice, you should explicitly set encodings in scripts using the -Encoding parameter to produce deterministic behavior across platforms.

New-ModuleManifest cmdlet에는 인코딩 매개 변수가 없습니다.New-ModuleManifest cmdlet does not have Encoding parameter. New-ModuleManifest cmdlet을 사용하여 만든 모듈 매니페스트(.psd1) 파일의 인코딩은 환경에 따라 다릅니다. 즉, Linux에서 실행되는 PowerShell Core인 경우 인코딩은 UTF-8(BOM 없음)이며, 그렇지 않은 경우 인코딩은 UTF-16(BOM 포함)입니다.The encoding of the module manifest (.psd1) file created with New-ModuleManifest cmdlet depends on environment: if it is PowerShell Core running on Linux then encoding is UTF-8 (no BOM); otherwise encoding is UTF-16 (with BOM). (#3940)(#3940)

앰퍼샌드(&)를 사용하여 파이프라인의 백그라운드 지원 (#3360)Support backgrounding of pipelines with ampersand (&) (#3360)

파이프라인 끝에 &을 배치하면 파이프라인이 PowerShell 작업으로 실행됩니다.Putting & at the end of a pipeline causes the pipeline to be run as a PowerShell job. 파이프라인이 백그라운드로 설정되면 작업 개체가 반환됩니다.When a pipeline is backgrounded, a job object is returned. 일단 파이프라인이 작업으로 실행되면 모든 표준 *-Job cmdlet을 사용하여 작업을 관리할 수 있습니다.Once the pipeline is running as a job, all of the standard *-Job cmdlets can be used to manage the job. 파이프라인에서 사용되는 변수(프로세스별 변수 무시)는 작업에 자동으로 복사되므로 Copy-Item $foo $bar &가 작동합니다.Variables (ignoring process-specific variables) used in the pipeline are automatically copied to the job so Copy-Item $foo $bar & just works. 작업은 또한 사용자의 홈 디렉터리가 아닌 현재 디렉터리에서 실행됩니다.The job is also run in the current directory instead of the user's home directory. PowerShell 작업에 대한 자세한 내용은 about_Jobs를 참조하세요.For more information about PowerShell jobs, see about_Jobs.

유의적 버전 사용Semantic versioning

  • SemVer 2.0와 호환되도록 SemanticVersion을 만들었습니다.Made SemanticVersion compatible with SemVer 2.0. (#5037) (@iSazonov에게 감사드립니다!)(#5037) (Thanks @iSazonov!)
  • SemVer와 일치하도록 New-ModuleManifest의 기본값 ModuleVersion0.0.1로 변경했습니다.Changed default ModuleVersion in New-ModuleManifest to 0.0.1 to align with SemVer. (#4842) (@LDSpits에게 감사드립니다.)(#4842) (Thanks @LDSpits)
  • semverSystem.Management.Automation.SemanticVersion의 유형 가속기로 추가했습니다.Added semver as a type accelerator for System.Management.Automation.SemanticVersion. (#4142) (@oising에게 감사드립니다!)(#4142) (Thanks to @oising!)
  • MajorMinor 버전 값으로만 구성된 SemanticVersion 인스턴스와 Version 인스턴스 간의 비교가 가능합니다.Enabled comparison between a SemanticVersion instance and a Version instance that is constructed only with Major and Minor version values.

언어 업데이트Language updates

  • 사용자가 유니코드 문자를 인수, 문자열 또는 변수 이름으로 사용할 수 있도록 유니코드 이스케이프 구문 분석을 구현합니다.Implement Unicode escape parsing so that users can use Unicode characters as arguments, strings, or variable names. (#3958) (@rkeithhill에게 감사드립니다!)(#3958) (Thanks to @rkeithhill!)
  • ESC: `e를 위한 새로운 이스케이프 문자 추가됨Added new escape character for ESC: `e
  • 열거형을 문자열로 변환하기 위한 지원 추가됨(#4318) (@KirkMunro에게 감사드립니다.)Added support for converting enums to string (#4318) (Thanks @KirkMunro)
  • 단일 요소 배열을 일반 컬렉션에 캐스팅되는 현상 수정됨Fixed casting single element array to a generic collection. (#3170)(#3170)
  • 문자 범위 오버로드가 .. 연산자에 추가되어 'a'..'z'는 'a'에서 'z'로 문자를 반환합니다.Added character range overload to the .. operator, so 'a'..'z' returns characters from 'a' to 'z'. (#5026) (@IISResetMe에게 감사드립니다!)(#5026) (Thanks @IISResetMe!)
  • 읽기 전용 변수를 덮어 쓰지 않도록 변수 할당 수정됨Fixed variable assignment to not overwrite read-only variables
  • 스크립트 cmdlet를 도팅할 때 자동 변수의 로컬을 'DottedScopes'에 밀어넣기 (#4709)Push locals of automatic variables to 'DottedScopes' when dotting script cmdlets (#4709)
  • 분할 연산자에서 ‘Singleline, Multiline’ 옵션 사용 가능(#4721) (@iSazonov에게 감사드립니다.)Enable use of 'Singleline, Multiline' option in split operator (#4721) (Thanks @iSazonov)

엔진 업데이트Engine updates

  • $PSVersionTable에는 다음과 같이 4개의 새로운 속성이 있습니다.$PSVersionTable has four new properties:
    • PSEdition: PowerShell Core에서는 Core로 설정되고 Windows PowerShell에서는 Desktop으로 설정됩니다.PSEdition: This is set to Core on PowerShell Core and Desktop on Windows PowerShell
    • GitCommitId: PowerShell이 빌드된 Git 분기 또는 태그의 Git 커밋 ID입니다.GitCommitId: This is the Git commit ID of the Git branch or tag where PowerShell was built. 릴리스된 빌드에서는 PSVersion과 동일할 가능성이 높습니다.On released builds, it will likely be the same as PSVersion.
    • OS: [System.Runtime.InteropServices.RuntimeInformation]::OSDescription에 의해 반환된 OS 버전 문자열입니다.OS: This is an OS version string returned by [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
    • Platform: [System.Environment]::OSVersion.Platform에 의해 반환됩니다. Windows에서는 Win32NT, macOS에서는 Unix, Linux에서는 Unix로 설정됩니다.Platform: This is returned by [System.Environment]::OSVersion.Platform It is set to Win32NT on Windows, Unix on macOS, and Unix on Linux.
  • $PSVersionTable에서 BuildVersion 속성이 제거되었습니다.Removed the BuildVersion property from $PSVersionTable. 이 속성은 Windows 빌드 버전과 강하게 연결되어 있습니다.This property was strongly tied to the Windows build version. 대신 GitCommitId를 사용하여 PowerShell Core의 정확한 빌드 버전을 검색하는 것이 좋습니다.Instead, we recommend that you use GitCommitId to retrieve the exact build version of PowerShell Core. (#3877) (@iSazonov에게 감사드립니다!)(#3877) (Thanks to @iSazonov!)
  • $PSVersionTable에서 ClrVersion 속성을 제거합니다.Remove ClrVersion property from $PSVersionTable. 이 속성은 .NET Core와는 관련이 없으며 PowerShell에 적용할 수 없는 특정 레거시 용도로만 .NET Core에 유지되었습니다.This property is irrelevant for .NET Core, and was only preserved in .NET Core for specific legacy purposes that are inapplicable to PowerShell.
  • PowerShell이 주어진 OS($IsWindows, $IsMacOs$IsLinux)에서 실행 중인지 여부를 결정하는 세 가지 새로운 자동 변수가 추가되었습니다.Added three new automatic variables to determine whether PowerShell is running in a given OS: $IsWindows, $IsMacOs, and $IsLinux.
  • PowerShell Core 배너에 GitCommitId를 추가합니다.Add GitCommitId to PowerShell Core banner. 이제 버전을 얻기 위해 PowerShell을 시작하자마자 $PSVersionTable을 실행할 필요가 없습니다!Now you don't have to run $PSVersionTable as soon as you start PowerShell to get the version! (#3916) (@iSazonov에게 감사드립니다!)(#3916) (Thanks to @iSazonov!)
  • $PSHomepowershell.config.json이라는 JSON 구성 파일을 추가하여 시작 시간(예: ExecutionPolicy) 이전에 필요한 일부 설정을 저장합니다.Add a JSON config file called powershell.config.json in $PSHome to store some settings required before startup time (e.g. ExecutionPolicy).
  • Windows EXE를 실행할 때 파이프라인을 차단하지 않음Don't block pipeline when running Windows EXE's
  • COM 컬렉션의 열거를 사용했습니다.Enabled enumeration of COM collections. (#4553)(#4553)

cmdlet 업데이트Cmdlet updates

새로운 cmdletNew cmdlets

  • Get-UptimeMicrosoft.PowerShell.Utility에 추가합니다.Add Get-Uptime to Microsoft.PowerShell.Utility.
  • Remove-Alias 명령을 추가합니다.Add Remove-Alias Command. (#5143) (@PowershellNinja에게 감사드립니다!)(#5143) (Thanks @PowershellNinja!)
  • Remove-Service를 관리 모듈에 추가합니다.Add Remove-Service to Management module. (#4858) (@joandrsn에게 감사드립니다!)(#4858) (Thanks @joandrsn!)

웹 cmdletWeb cmdlets

  • 웹 cmdlet에 대한 인증서 인증 지원을 추가합니다.Add certificate authentication support for web cmdlets. (#4646) (@markekraus에게 감사드립니다.)(#4646) (Thanks @markekraus)
  • 웹 cmdlet에 콘텐츠 헤더 지원을 추가합니다.Add support for content headers to web cmdlets. (#4494 & #4640) (@markekraus에게 감사드립니다.)(#4494 & #4640) (Thanks @markekraus)
  • 웹 cmdlet에 다중 링크 헤더 지원을 추가합니다.Add multiple link header support to Web Cmdlets. (#5265) (@markekraus에게 감사드립니다!)(#5265) (Thanks @markekraus!)
  • 웹 cmdlet의 링크 헤더 페이지 매김 지원 (#3828)Support Link header pagination in web cmdlets (#3828)
    • Invoke-WebRequest의 경우, 응답에 링크 헤더가 포함될 때 URL 및 rel 특성을 나타내는 사전으로 RelationLink 속성을 만들고 개발자가 쉽게 사용할 수 있도록 URL이 절대적인지 확인합니다.For Invoke-WebRequest, when the response includes a Link header we create a RelationLink property as a Dictionary representing the URLs and rel attributes and ensure the URLs are absolute to make it easier for the developer to use.
    • Invoke-RestMethod의 경우, 응답에 링크 헤더가 포함될 때 더 이상 존재하지 않거나 선택적 -MaximumFollowRelLink 매개 변수 값에 도달할 때까지 자동으로 next rel 링크를 따라가는 -FollowRelLink 스위치가 노출됩니다.For Invoke-RestMethod, when the response includes a Link header we expose a -FollowRelLink switch to automatically follow next rel links until they no longer exist or once we hit the optional -MaximumFollowRelLink parameter value.
  • 웹 cmdlet에 -CustomMethod 매개 변수를 추가하여 비표준 메서드 동사를 허용합니다.Add -CustomMethod parameter to web cmdlets to allow for non-standard method verbs. (#3142) (@Lee303에게 감사드립니다!)(#3142) (Thanks to @Lee303!)
  • 웹 cmdlet에 SslProtocol 지원을 추가합니다.Add SslProtocol support to Web Cmdlets. (#5329) (@markekraus에게 감사드립니다!)(#5329) (Thanks @markekraus!)
  • 웹 cmdlet에 Multipart 지원을 추가합니다.Add Multipart support to web cmdlets. (#4782) (@markekraus에게 감사드립니다.)(#4782) (Thanks @markekraus)
  • 웹 cmdlet에 -NoProxy를 추가하여 시스템 수준의 프록시 설정을 무시합니다.Add -NoProxy to web cmdlets so that they ignore the system-wide proxy setting. (#3447) (@TheFlyingCorpse에게 감사드립니다!)(#3447) (Thanks to @TheFlyingCorpse!)
  • 웹 cmdlet의 사용자 에이전트가 이제 OS 플랫폼을 보고합니다. (#4937) (@LDSpits에게 감사드립니다.)User Agent of Web Cmdlets now reports the OS platform (#4937) (Thanks @LDSpits)
  • 웹 cmdlet에 -SkipHeaderValidation 스위치를 추가하여 헤더 값의 유효성을 검사하지 않고 헤더 추가를 지원합니다.Add -SkipHeaderValidation switch to web cmdlets to support adding headers without validating the header value. (#4085)(#4085)
  • 필요한 경우 웹 cmdlet이 서버의 HTTPS 인증서의 유효성을 검사하지 않도록 설정합니다.Enable web cmdlets to not validate the HTTPS certificate of the server if required.
  • 웹 cmdlet에 인증 매개 변수를 추가합니다.Add authentication parameters to web cmdlets. (#5052) (@markekraus에게 감사드립니다.)(#5052) (Thanks @markekraus)
    • 기본, OAuth 및 전달자의 세 가지 옵션을 제공하는 -Authentication을 추가합니다.Add -Authentication that provides three options: Basic, OAuth, and Bearer.
    • -Token을 추가하여 OAuth 및 전달자 옵션에 대한 전달자 토큰을 가져옵니다.Add -Token to get the bearer token for OAuth and Bearer options.
    • HTTPS 이외의 전송 체계에 제공된 인증을 생략하려면 -AllowUnencryptedAuthentication을 추가합니다.Add -AllowUnencryptedAuthentication to bypass authentication that is provided for any transport scheme other than HTTPS.
  • 응답 헤더 캡처를 사용하려면 -ResponseHeadersVariableInvoke-RestMethod에 추가합니다.Add -ResponseHeadersVariable to Invoke-RestMethod to enable the capture of response headers. (#4888) (@markekraus에게 감사드립니다.)(#4888) (Thanks @markekraus)
  • 응답 상태 코드가 성공적이지 않은 경우 예외에 HTTP 응답을 포함하도록 웹 cmdlet을 수정합니다.Fix web cmdlets to include the HTTP response in the exception when the response status code is not success. (#3201)(#3201)
  • 웹 cmdlet UserAgentWindowsPowerShell에서 PowerShell로 변경합니다.Change web cmdlets UserAgent from WindowsPowerShell to PowerShell. (#4914) (@markekraus에게 감사드립니다.)(#4914) (Thanks @markekraus)
  • 명시적 ContentType 검색을 Invoke-RestMethod에 추가합니다. (#4692)Add explicit ContentType detection to Invoke-RestMethod (#4692)
  • 비표준 사용자 에이전트 헤더에서 작동하도록 웹 cmdlet -SkipHeaderValidation을 수정합니다.Fix web cmdlets -SkipHeaderValidation to work with non-standard User-Agent headers. (#4479 & #4512) (@markekraus에게 감사드립니다.)(#4479 & #4512) (Thanks @markekraus)

JSON cmdletJSON cmdlets

  • -AsHashtableConvertFrom-Json에 추가하여 Hashtable을 대신 반환합니다.Add -AsHashtable to ConvertFrom-Json to return a Hashtable instead. (#5043) (@bergmeister에게 감사드립니다!)(#5043) (Thanks @bergmeister!)
  • ConvertTo-Json 출력과 함께 더 보기 좋은 포맷터를 사용합니다.Use prettier formatter with ConvertTo-Json output. (#2787) (@kittholland에게 감사드립니다!)(#2787) (Thanks to @kittholland!)
  • Jobject 직렬화 지원을 ConvertTo-Json에 추가합니다.Add Jobject serialization support to ConvertTo-Json. (#5141)(#5141)
  • ConvertFrom-Json을 수정하여 완전한 JSON 문자열을 함께 구성하는 파이프라인에서 문자열 배열을 역직렬화합니다.Fix ConvertFrom-Json to deserialize an array of strings from the pipeline that together construct a complete JSON string. 이렇게 하면 줄 바꿈이 JSON 구문 분석을 중단시키는 일부 경우가 수정됩니다.This fixes some cases where newlines would break JSON parsing. (#3823)(#3823)
  • System.Array에 대해 정의된 AliasProperty "Count"를 제거합니다.Remove the AliasProperty "Count" defined for System.Array. 이렇게 하면 일부 ConvertFrom-Json 출력에서 불필요한 Count 속성이 제거됩니다.This removes the extraneous Count property on some ConvertFrom-Json output. (#3231) (@PetSerAl에게 감사드립니다!)(#3231) (Thanks to @PetSerAl!)

CSV cmdletCSV cmdlets

  • Import-CsvConvertFrom-Csv에 대한 PSTypeName 지원을 추가합니다.Add PSTypeName Support for Import-Csv and ConvertFrom-Csv. (#5389) (@markekraus에게 감사드립니다!)(#5389) (Thanks @markekraus!)
  • Import-CsvCR, LFCRLF를 줄 구분 기호로 지원하도록 합니다.Make Import-Csv support CR, LF, and CRLF as line delimiters. (#5363) (@iSazonov에게 감사드립니다!)(#5363) (Thanks @iSazonov!)
  • -NoTypeInformationExport-CsvConvertTo-Csv의 기본값으로 만듭니다.Make -NoTypeInformation the default on Export-Csv and ConvertTo-Csv. (#5164) (@markekraus에게 감사드립니다.)(#5164) (Thanks @markekraus)

서비스 cmdletService cmdlets

  • Get-Service에 의해 반환된 ServiceController 객체에 속성 UserName, Description, DelayedAutoStart, BinaryPathNameStartupType을 추가합니다.Add properties UserName, Description, DelayedAutoStart, BinaryPathName, and StartupType to the ServiceController objects returned by Get-Service. (#4907) (@joandrsn에게 감사드립니다.)(#4907) (Thanks @joandrsn)
  • Set-Service 명령에서 자격 증명을 설정하는 기능을 추가합니다.Add functionality to set credentials on Set-Service command. (#4844) (@joandrsn에게 감사드립니다.)(#4844) (Thanks @joandrsn)

기타 cmdletOther cmdlets

  • 링크 루프를 확인하고 필요 시 symlinks를 통과하는 -FollowSymlink라는 Get-ChildItem에 매개 변수를 추가합니다.Add a parameter to Get-ChildItem called -FollowSymlink that traverses symlinks on demand, with checks for link loops. (#4020)(#4020)
  • Add-Type을 업데이트하여 CSharpVersion7을 지원합니다.Update Add-Type to support CSharpVersion7. (#3933) (@iSazonov에게 감사드립니다.)(#3933) (Thanks to @iSazonov)
  • 더 나은 해결책을 찾을 때까지 지원되지 않는 API를 사용하기 때문에 Microsoft.PowerShell.LocalAccounts 모듈을 제거합니다.Remove the Microsoft.PowerShell.LocalAccounts module due to the use of unsupported APIs until a better solution is found. (#4302)(#4302)
  • 더 나은 해결책을 찾을 때까지 지원되지 않는 API를 사용하기 때문에 Microsoft.PowerShell.Diagnostics에 있는 *-Counter cmdlet을 제거합니다.Remove the *-Counter cmdlets in Microsoft.PowerShell.Diagnostics due to the use of unsupported APIs until a better solution is found. (#4303)(#4303)
  • Invoke-Item -Path <folder>에 대한 지원을 추가합니다.Add support for Invoke-Item -Path <folder>. (#4262)(#4262)
  • -Extension-LeafBase 스위치를 Split-Path에 추가하면 파일 이름 확장자와 파일 이름의 나머지 사이에 경로를 분할할 수 있습니다.Add -Extension and -LeafBase switches to Split-Path so that you can split paths between the filename extension and the rest of the filename. (#2721) (@powercode에게 감사드립니다!)(#2721) (Thanks to @powercode!)
  • 위쪽/아래쪽 N 정렬을 위해 매개 변수 -Top-BottomSort-Object에 추가합니다.Add parameters -Top and -Bottom to Sort-Object for Top/Bottom N sort
  • CodeProperty "Parent"System.Diagnostics.Process에 추가하여 프로세스의 상위 프로세스를 노출합니다.Expose a process' parent process by adding the CodeProperty "Parent" to System.Diagnostics.Process. (#2850) (@powercode에게 감사드립니다!)(#2850) (Thanks to @powercode!)
  • Get-Process의 메모리 열에 KB 대신 MB를 사용합니다.Use MB instead of KB for memory columns of Get-Process
  • Out-String을 위해 -NoNewLine 스위치를 추가합니다.Add -NoNewLine switch for Out-String. (#5056) (@raghav710에게 감사드립니다.)(#5056) (Thanks @raghav710)
  • Move-Item cmdlet은 -Include, -Exclude-Filter 매개 변수를 지원합니다.Move-Item cmdlet honors -Include, -Exclude, and -Filter parameters. (#3878)(#3878)
  • Remove-Item의 레지스트리 경로에 사용되도록 *를 허용합니다.Allow * to be used in registry path for Remove-Item. (#4866)(#4866)
  • -TitleGet-Credential에 추가하고 플랫폼 간 프롬프트 경험을 통합합니다.Add -Title to Get-Credential and unify the prompt experience across platforms.
  • -TimeOut 매개 변수를 Test-Connection에 추가합니다.Add the -TimeOut parameter to Test-Connection. (#2492)(#2492)
  • Get-AuthenticodeSignature cmdlet은 이제 파일 서명 타임스탬프를 가져올 수 있습니다.Get-AuthenticodeSignature cmdlets can now get file signature timestamp. (#4061)(#4061)
  • Get-Help에서 지원되지 않는 -ShowWindow 스위치를 제거합니다.Remove unsupported -ShowWindow switch from Get-Help. (#4903)(#4903)
  • 반환된 배열 요소에 구분 기호를 포함하지 않도록 Get-Content -Delimiter를 수정합니다. (#3706) (@mklement0에게 감사드립니다.)Fix Get-Content -Delimiter to not include the delimiter in the array elements returned (#3706) (Thanks @mklement0)
  • Meta, CharsetTransitional 매개 변수를 ConvertTo-HTML에 추가합니다. (#4184) (@ergo3114에게 감사드립니다.)Add Meta, Charset, and Transitional parameters to ConvertTo-HTML (#4184) (Thanks @ergo3114)
  • WindowsUBRWindowsVersion 속성을 Get-ComputerInfo 결과에 추가합니다.Add WindowsUBR and WindowsVersion properties to Get-ComputerInfo result
  • -Group 매개 변수를 Get-Verb에 추가합니다.Add -Group parameter to Get-Verb
  • ShouldProcess 지원을 New-FileCatalogTest-FileCatalog에 추가합니다(-WhatIf-Confirm 수정).Add ShouldProcess support to New-FileCatalog and Test-FileCatalog (fixes -WhatIf and -Confirm). (#3074) (@iSazonov에게 감사드립니다!)(#3074) (Thanks to @iSazonov!)
  • -WhatIf 스위치를 Start-Process cmdlet에 추가합니다. (#4735) (@sarithsutha에게 감사드립니다.)Add -WhatIf switch to Start-Process cmdlet (#4735) (Thanks @sarithsutha)
  • ValidateNotNullOrEmpty 너무 많은 기존 매개 변수를 추가합니다.Add ValidateNotNullOrEmpty too many existing parameters.

탭 완성Tab completion

  • 런타임 변수 값을 기반으로 탭 완성의 형식 유추를 향상시켰습니다.Enhanced the type inference in tab completion based on runtime variable values. (#2744) (@powercode에게 감사드립니다!) 이렇게 하면 다음과 같은 상황에서 탭 완성이 가능합니다.(#2744) (Thanks to @powercode!) This enables tab completion in situations like:

    $p = Get-Process
    $p | Foreach-Object Prio<tab>
    
  • Select-Object-Property에 대해 해시 테이블 탭 완성을 추가합니다.Add Hashtable tab completion for -Property of Select-Object. (#3625) (@powercode에게 감사드립니다.)(#3625) (Thanks to @powercode)

  • -ExcludePropertySelect-Object-ExpandProperty에 인수 자동 완성을 사용합니다.Enable argument auto-completion for -ExcludeProperty and -ExpandProperty of Select-Object. (#3443) (@iSazonov에게 감사드립니다!)(#3443) (Thanks to @iSazonov!)

  • native.exe --<tab>를 네이티브 완성자로 호출하도록 탭 완성의 버그를 수정했습니다.Fix a bug in tab completion to make native.exe --<tab> call into native completer. (#3633) (@powercode에게 감사드립니다!)(#3633) (Thanks to @powercode!)

주요 변경 내용Breaking changes

PowerShell Core 6.0은 많은 주요 내용이 변경되었습니다.We've introduced a number of breaking changes in PowerShell Core 6.0. 자세한 내용은 PowerShell Core 6.0의 주요 변경 내용을 참조하세요.To read more about them in detail, see Breaking Changes in PowerShell Core 6.0.

디버깅Debugging

  • Invoke-Command -ComputerName에 대한 원격 스텝인 디버깅을 지원합니다.Support for remote step-in debugging for Invoke-Command -ComputerName. (#3015)(#3015)
  • PowerShell Core에서 바인더 디버그 로깅 사용Enable binder debug logging in PowerShell Core

파일 시스템 업데이트Filesystem updates

  • UNC 경로의 파일 시스템 공급자의 사용을 활성화합니다.Enable usage of the Filesystem provider from a UNC path. ($4998)($4998)
  • Split-Path가 이제 UNC 루트와 함께 작동Split-Path now works with UNC roots
  • 인수가 없는 cdcd ~처럼 동작cd with no arguments now behaves as cd ~
  • PowerShell Core를 수정하여 260자 보다 더 긴 있는 경로를 사용할 수 있게 되었습니다.Fixed PowerShell Core to allow use of paths that are more than 260 characters long. (#3960)(#3960)

버그 수정 및 성능 향상Bug fixes and performance improvements

시작 시간, 다양한 기본 제공 cmdlet 및 네이티브 이진 파일과의 상호 작용 등 PowerShell 전체 성능이 대폭 향상되었습니다.We've made many improvements to performance across PowerShell, including in startup time, various built-in cmdlets, and interaction with native binaries.

또한 PowerShell Core 내의 여러 가지 버그를 수정했습니다.We've also fixed a number of bugs within PowerShell Core. 수정 사항 및 변경 사항 전체 목록은 GitHub의 changelog를 확인하세요.For a complete list of fixes and changes, check out our changelog on GitHub.

원격 분석Telemetry

  • PowerShell Core 6.0은 다음과 같은 두 값을 보고하기 위해 콘솔 호스트에 원격 분석 기능을 추가했습니다. (#3620)PowerShell Core 6.0 added telemetry to the console host to report two values (#3620):
    • OS 플랫폼($PSVersionTable.OSDescription)the OS platform ($PSVersionTable.OSDescription)
    • PowerShell의 정확한 버전($PSVersionTable.GitCommitId)the exact version of PowerShell ($PSVersionTable.GitCommitId)

이 원격 분석을 옵트아웃(opt out)하려는 경우 true, 1 또는 yes 값 중 하나로 간단히 POWERSHELL_TELEMETRY_OPTOUT 환경 변수를 만듭니다.If you want to opt-out of this telemetry, simply create POWERSHELL_TELEMETRY_OPTOUT environment variable with one of the following values: true, 1 or yes. 변수를 만들면 PowerShell의 첫 실행 전이라도 모든 원격 분석이 바이패스됩니다.Creating the variable bypasses all telemetry even before the first run of PowerShell. 또한 이 원격 분석 데이터와 커뮤니티 대시보드의 원격 분석에서 얻은 정보를 공개할 예정입니다.We also plan on exposing this telemetry data and the insights we glean from the telemetry in the community dashboard. 블로그 게시물에서 이 데이터를 사용하는 방법에 대해 자세히 알 수 있습니다.You can find out more about how we use this data in this blog post.