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

다음은 PowerShell Core 6.1에 도입된 몇 가지 새로운 주요 기능 및 변경 내용의 선택 항목입니다.Below is a selection of some of the major new features and changes that have been introduced in PowerShell Core 6.1.

PowerShell을 더 빠르고 더 안정적으로 만들어주는 “지루한 작업”도 많이 있습니다(또한 아주 많은 버그 수정도)!There's also tons of "boring stuff" that make PowerShell faster and more stable (plus lots and lots of bug fixes)! 변경 사항의 전체 목록은 GitHub의 changelog를 확인하세요.For a full list of changes, check out our changelog on GitHub.

다음 이름 중 일부를 호출하는 동안 이 릴리스를 가능하게 해준 커뮤니티 기여자 모두에게 감사의 말씀을 드립니다.And while we call out some names below, thank you to all of the community contributors that made this release possible.

.NET Core 2.1.NET Core 2.1

5월에 출시된 후 PowerShell Core 6.1이 .NET Core 2.1로 이동되어 다음을 포함한 다양한 항목이 PowerShell에서 개선되었습니다.PowerShell Core 6.1 moved to .NET Core 2.1 after it was released in May, resulting in a number of improvements to PowerShell, including:

.NET Core용 Windows 호환 기능 팩Windows Compatibility Pack for .NET Core

Windows에서 .NET 팀은 제거된 많은 API를 다시 Windows의 .NET Core로 추가하는 어셈블리 집합인 .NET Core용 Windows 호환 기능 팩을 제공합니다.On Windows, the .NET team shipped the Windows Compatibility Pack for .NET Core, a set of assemblies that add a number of removed APIs back to .NET Core on Windows.

Windows 호환 기능 팩을 PowerShell Core 6.1 릴리스에 추가하였으므로 이러한 API를 사용하는 모든 모듈 또는 스크립트는 사용 가능한 항목에 의존할 수 있습니다.We've added the Windows Compatibility Pack to PowerShell Core 6.1 release so that any modules or scripts that use these APIs can rely on them being available.

Windows 호환 기능 책을 통해 PowerShell Core는 Windows 10 2018년 10월 업데이트 및 Windows Server 2019와 제공되는 1900개 이상의 cmdlet을 사용할 수 있습니다.The Windows Compatibility Pack enables PowerShell Core to use more than 1900 cmdlets that ship with Windows 10 October 2018 Update and Windows Server 2019.

응용 프로그램 허용 목록에 대한 지원Support for Application Whitelisting

PowerShell Core 6.1에는 AppLockerDevice Guard 응용 프로그램 허용 목록을 지원하는 Windows PowerShell 5.1을 사용한 패리티가 있습니다.PowerShell Core 6.1 has parity with Windows PowerShell 5.1 supporting AppLocker and Device Guard application whitelisting. 응용 프로그램 허용 목록은 PowerShell 제한된 언어 모드와 함께 사용되어 실행할 수 있도록 허용된 바이너리의 세부적 제어를 허용합니다.Application whitelisting allows granular control of what binaries are allowed to be executed used with PowerShell Constrained Language mode.

성능 향상Performance improvements

PowerShell Core 6.0은 일부 성능이 크게 향상되었습니다.PowerShell Core 6.0 made some significant performance improvements. PowerShell Core 6.1은 특정 작업의 속도를 계속 개선하고 있습니다.PowerShell Core 6.1 continues to improve the speed of certain operations.

예를 들어 Group-Object의 속도는 66% 빨라졌습니다.For example, Group-Object has been sped up by 66%:

Measure-Command { 1..100000 | % {Get-Random -Minimum 1 -Maximum 10000} | Group-Object }
Windows PowerShell 5.1Windows PowerShell 5.1 PowerShell Core 6.0PowerShell Core 6.0 PowerShell Core 6.1PowerShell Core 6.1
시간(초)Time (sec) 25.17825.178 19.65319.653 6.6416.641
속도 증가(%)Speed-up (%) 해당 없음N/A 21.9%21.9% 66.2%66.2%

마찬가지로, 이와 같은 정렬 시나리오도 15% 이상 향상되었습니다.Similarly, sorting scenarios like this one have improved by more than 15%:

Measure-Command { 1..100000 | % {Get-Random -Minimum 1 -Maximum 10000} | Sort-Object }
Windows PowerShell 5.1Windows PowerShell 5.1 PowerShell Core 6.0PowerShell Core 6.0 PowerShell Core 6.1PowerShell Core 6.1
시간(초)Time (sec) 12.17012.170 8.4938.493 7.087.08
속도 증가(%)Speed-up (%) 해당 없음N/A 30.2%30.2% 16.6%16.6%

Import-Csv도 Windows PowerShell에서 회귀된 후 속도가 크게 향상되었습니다.Import-Csv has also been sped up significantly after a regression from Windows PowerShell. 다음 예제에서는 26,616개 행과 6개의 열이 있는 CSV 테스트를 사용합니다.The following example uses a test CSV with 26,616 rows and six columns:

Measure-Command {$a = Import-Csv foo.csv}
Windows PowerShell 5.1Windows PowerShell 5.1 PowerShell Core 6.0PowerShell Core 6.0 PowerShell Core 6.1PowerShell Core 6.1
시간(초)Time (sec) 0.4410.441 1.0691.069 0.2680.268
속도 증가(%)Speed-up (%) 해당 없음N/A -142.4%-142.4% 74.9%(WPS에서 39.2%)74.9% (39.2% from WPS)

마지막으로, JSON에서 PSObject로 변환할 때 Windows PowerShell 이후에 50% 이상 속도가 향상되었습니다.Lastly, conversion from JSON into PSObject has been sped up by more than 50% since Windows PowerShell. 다음 예제에서는 ~2MB 테스트 JSON 파일을 사용합니다.The following example uses a ~2MB test JSON file:

Measure-Command {Get-Content .\foo.json | ConvertFrom-Json}
Windows PowerShell 5.1Windows PowerShell 5.1 PowerShell Core 6.0PowerShell Core 6.0 PowerShell Core 6.1PowerShell Core 6.1
시간(초)Time (sec) 0.2590.259 0.5770.577 0.1250.125
속도 증가(%)Speed-up (%) 해당 없음N/A -122.8%-122.8% 78.3%(WPS에서 51.7%)78.3% (51.7% from WPS)

Windows에서 호환 미해결 모듈에 대한 system32 확인Check system32 for compatible in-box modules on Windows

Windows 10 1809 업데이트 및 Windows Server 2019에서 몇 가지 미해결 PowerShell 모듈을 업데이트하여 PowerShell Core와 호환되도록 표시했습니다.In the Windows 10 1809 update and Windows Server 2019, we updated a number of in-box PowerShell modules to mark them as compatible with PowerShell Core.

PowerShell Core 6.1이 시작되면 자동으로 $windir\System32PSModulePath 환경 변수의 일부로 포함됩니다.When PowerShell Core 6.1 starts up, it will automatically include $windir\System32 as part of the PSModulePath environment variable. 단, 해당 CompatiblePSEditionCore와 호환되는 것으로 표시되는 경우 모듈을 Get-ModuleImport-Module에만 노출합니다.However, it only exposes modules to Get-Module and Import-Module if its CompatiblePSEdition is marked as compatible with Core.

Get-Module -ListAvailable

참고

설치된 역할 및 기능에 따라 다양한 사용 가능한 모듈을 확인할 수 있습니다.You may see different available modules depending on what roles and features are installed.

...
    Directory: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ModuleType Version    Name                                PSEdition ExportedCommands
---------- -------    ----                                --------- ----------------
Manifest   2.0.1.0    Appx                                Core,Desk {Add-AppxPackage, Get-AppxPackage, Get-AppxPacka...
Manifest   1.0.0.0    BitLocker                           Core,Desk {Unlock-BitLocker, Suspend-BitLocker, Resume-Bit...
Manifest   1.0.0.0    DnsClient                           Core,Desk {Resolve-DnsName, Clear-DnsClientCache, Get-DnsC...
Manifest   1.0.0.0    HgsDiagnostics                      Core,Desk {New-HgsTraceTarget, Get-HgsTrace, Get-HgsTraceF...
Binary     2.0.0.0    Hyper-V                             Core,Desk {Add-VMAssignableDevice, Add-VMDvdDrive, Add-VMF...
Binary     1.1        Hyper-V                             Core,Desk {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMHa...
Manifest   2.0.0.0    NetAdapter                          Core,Desk {Disable-NetAdapter, Disable-NetAdapterBinding, ...
Manifest   1.0.0.0    NetEventPacketCapture               Core,Desk {New-NetEventSession, Remove-NetEventSession, Ge...
Manifest   2.0.0.0    NetLbfo                             Core,Desk {Add-NetLbfoTeamMember, Add-NetLbfoTeamNic, Get-...
Manifest   1.0.0.0    NetNat                              Core,Desk {Get-NetNat, Get-NetNatExternalAddress, Get-NetN...
Manifest   2.0.0.0    NetQos                              Core,Desk {Get-NetQosPolicy, Set-NetQosPolicy, Remove-NetQ...
Manifest   2.0.0.0    NetSecurity                         Core,Desk {Get-DAPolicyChange, New-NetIPsecAuthProposal, N...
Manifest   1.0.0.0    NetSwitchTeam                       Core,Desk {New-NetSwitchTeam, Remove-NetSwitchTeam, Get-Ne...
Manifest   1.0.0.0    NetWNV                              Core,Desk {Get-NetVirtualizationProviderAddress, Get-NetVi...
Manifest   2.0.0.0    TrustedPlatformModule               Core,Desk {Get-Tpm, Initialize-Tpm, Clear-Tpm, Unblock-Tpm...
...

-SkipEditionCheck 스위치 매개 변수를 사용하여 모든 모듈을 표시하도록 이 동작을 재정의할 수 있습니다.You can override this behavior to show all modules using the -SkipEditionCheck switch parameter. 또한 PSEdition 속성을 테이블 출력에 추가했습니다.We've also added a PSEdition property to the table output.

Get-Module Net* -ListAvailable -SkipEditionCheck
    Directory: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ModuleType Version    Name                        PSEdition ExportedCommands
---------- -------    ----                        --------- ----------------
Manifest   2.0.0.0    NetAdapter                  Core,Desk {Disable-NetAdapter, Disable-NetAdapterBinding, ...
Manifest   1.0.0.0    NetConnection               Core,Desk {Get-NetConnectionProfile, Set-NetConnectionProf...
Manifest   1.0.0.0    NetDiagnostics              Desk      Get-NetView
Manifest   1.0.0.0    NetEventPacketCapture       Core,Desk {New-NetEventSession, Remove-NetEventSession, Ge...
Manifest   2.0.0.0    NetLbfo                     Core,Desk {Add-NetLbfoTeamMember, Add-NetLbfoTeamNic, Get-...
Manifest   1.0.0.0    NetNat                      Core,Desk {Get-NetNat, Get-NetNatExternalAddress, Get-NetN...
Manifest   2.0.0.0    NetQos                      Core,Desk {Get-NetQosPolicy, Set-NetQosPolicy, Remove-NetQ...
Manifest   2.0.0.0    NetSecurity                 Core,Desk {Get-DAPolicyChange, New-NetIPsecAuthProposal, N...
Manifest   1.0.0.0    NetSwitchTeam               Core,Desk {New-NetSwitchTeam, Remove-NetSwitchTeam, Get-Ne...
Manifest   1.0.0.0    NetTCPIP                    Core,Desk {Get-NetIPAddress, Get-NetIPInterface, Get-NetIP...
Manifest   1.0.0.0    NetWNV                      Core,Desk {Get-NetVirtualizationProviderAddress, Get-NetVi...
Manifest   1.0.0.0    NetworkConnectivityStatus   Core,Desk {Get-DAConnectionStatus, Get-NCSIPolicyConfigura...
Manifest   1.0.0.0    NetworkSwitchManager        Core,Desk {Disable-NetworkSwitchEthernetPort, Enable-Netwo...
Manifest   1.0.0.0    NetworkTransition           Core,Desk {Add-NetIPHttpsCertBinding, Disable-NetDnsTransi...

이 동작에 대한 자세한 내용은 PowerShell RFC0025를 확인하세요.For more information about this behavior, check out PowerShell RFC0025.

Markdown cmdlet 및 렌더링Markdown cmdlets and rendering

Markdown은 HTML로 렌더링할 수 있는 기본 서식의 읽을 수 있는 일반 문서를 만들기 위한 표준입니다.Markdown is a standard for creating readable plaintext documents with basic formatting that can be rendered into HTML.

콘솔에서 Markdown 문서를 변환하고 렌더링할 수 있도록 6.1에 다음을 포함한 일부 cmdlet이 추가되었습니다.We've added some cmdlets in 6.1 that allow you to convert and render Markdown documents in the console, including:

  • ConvertFrom-Markdown
  • Get-MarkdownOption
  • Set-MarkdownOption
  • Show-Markdown

예를 들어 Show-Markdown은 콘솔에 Markdown 파일을 렌더링합니다.For example, Show-Markdown renders a Markdown file in the console:

Show-Markdown 예제

이러한 cmdlet의 작동 방식에 대한 자세한 내용은 이 RFC를 확인하세요.For more information about how these cmdlets work, check out this RFC.

실험적 기능 플래그Experimental feature flags

실험적 기능 플래그를 사용하면 사용자가 마무리하지 않은 기능을 켤 수 있습니다.Experimental feature flags enable users to turn on features that haven't been finalized. 이러한 실험적 기능은 지원되지 않으며 버그가 있을 수 있습니다.These experimental features aren't supported and may have bugs.

PowerShell RFC0029에서 이 기능에 대해 자세히 알아볼 수 있습니다.You can learn more about this feature in PowerShell RFC0029.

웹 cmdlet 개선 사항Web cmdlet improvements

@markekraus 덕분에 다음과 같은 우리의 웹 cmdlet에 많은 개선 사항이 적용되었습니다. Invoke-WebRequestThanks to @markekraus, a whole slew of improvements have been made to our web cmdlets: Invoke-WebRequest Invoke-RestMethod.and Invoke-RestMethod.

  • PR #6109 - application-json 응답을 위한 UTF-8로 설정된 기본 인코딩PR #6109 - default encoding set to UTF-8 for application-json responses
  • PR #6018 - 표준을 준수하지 않는 Content-Type 헤더를 허용하는 -SkipHeaderValidation 매개 변수PR #6018 - -SkipHeaderValidation parameter to allow Content-Type headers that aren't standards-compliant
  • PR #5972 - 간소화된 multipart/form-data를 지원하는 Form 매개 변수PR #5972 - Form parameter to support simplified multipart/form-data support
  • PR #6338 - 호환, 대/소문자를 구분하지 않는 관계 키 처리PR #6338 - Compliant, case-insensitive handling of relation keys
  • PR #6447 - 웹 cmdlet에 대한 -Resume 매개 변수 추가PR #6447 - Add -Resume parameter for web cmdlets

원격 기능 향상Remoting improvements

컨테이너용 PowerShell Direct에서 먼저 PowerShell Core 사용을 시도PowerShell Direct for Containers tries to use PowerShell Core first

PowerShell Direct는 사용자가 네트워크 연결 또는 기타 원격 관리 서비스 없이 Hyper-V VM 또는 컨테이너에 연결할 수 있도록 허용하는 PowerShell 및 Hyper-V의 기능입니다.PowerShell Direct is a feature of PowerShell and Hyper-V that allows you to connect to a Hyper-V VM or Container without network connectivity or other remote management services.

과거에 PowerShell Direct는 받은 편지함 Windows PowerShell 인스턴스를 사용하여 컨테이너에 연결되었습니다.In the past, PowerShell Direct connected using the inbox Windows PowerShell instance on the Container. 이제 PowerShell Direct는 먼저 PATH 환경 변수에서 사용 가능한 pwsh.exe를 사용하여 연결을 시도합니다.Now, PowerShell Direct first attempts to connect using any available pwsh.exe on the PATH environment variable. pwsh.exe를 사용할 수 없는 경우 PowerShell Direct는 powershell.exe를 다시 사용합니다.If pwsh.exe isn't available, PowerShell Direct falls back to use powershell.exe.

Enable-PSRemoting은 이제 별도의 원격 엔드포인트를 미리 보기 버전으로 만듭니다.Enable-PSRemoting now creates separate remoting endpoints for preview versions

Enable-PSRemoting은 이제 다음과 같이 두 개의 원격 세션 구성을 만듭니다.Enable-PSRemoting now creates two remoting session configurations:

  • PowerShell의 주 버전에 대해 하나.One for the major version of PowerShell. 예를 들면 PowerShell.6입니다.For example,PowerShell.6. 부 버전에 의존할 수 있는 이 엔드포인트는 “시스템 수준” PowerShell 6 세션 구성으로 업데이트함This endpoint that can be relied upon across minor version updates as the "system-wide" PowerShell 6 session configuration
  • 버전별 세션 구성에 대해 하나. 예를 들면 PowerShell.6.1.0입니다.One version-specific session configuration, for example: PowerShell.6.1.0

이 동작은 여러 PowerShell 6 버전을 동일한 머신에 설치하고 액세스하려는 경우에 유용합니다.This behavior is useful if you want to have multiple PowerShell 6 versions installed and accessible on the same machine.

또한 PowerShell의 미리 보기 버전은 이제 Enable-PSRemoting cmdlet을 실행한 후에 각자 자신의 원격 세션 구성을 가져옵니다.Additionally, preview versions of PowerShell now get their own remoting session configurations after running the Enable-PSRemoting cmdlet:

C:\WINDOWS\system32> Enable-PSRemoting

출력은 이전에 WinRM을 설정하지 않은 경우 달라질 수 있습니다.Your output may be different if you haven't set up WinRM before.

WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.

그런 다음, PowerShell 6의 미리 보기 및 안정적 빌드에 대해서와 각 특정 버전에 대해서 별도 PowerShell 세션 구성이 표시됩니다.Then you can see separate PowerShell session configurations for the preview and stable builds of PowerShell 6, and for each specific version.

Get-PSSessionConfiguration
Name          : PowerShell.6.2-preview.1
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.6-preview
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : powershell.6
PSVersion     : 6.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

Name          : powershell.6.1.0
PSVersion     : 6.1
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed

SSH에 대해 지원되는 user@host:port 구문user@host:port syntax supported for SSH

SSH 클라이언트는 일반적으로 user@host:port 형식의 연결 문자열을 지원합니다.SSH clients typically support a connection string in the format user@host:port. 추가 SSH를 PowerShell 원격 기능에 대한 프로토콜로 사용하여 연결 문자열의 이 형식에 대한 지원을 추가했습니다.With the addition of SSH as a protocol for PowerShell Remoting, we've added support for this format of connection string:

Enter-PSSession -HostName fooUser@ssh.contoso.com:2222

Windows에서 탐색기 셸 상황에 맞는 메뉴를 추가하는 MSI 옵션MSI option to add explorer shell context menu on Windows

@bergmeister 덕분에 이제 Windows에서 상황에 맞는 메뉴를 사용할 수 있습니다.Thanks to @bergmeister, now you can enable a context menu on Windows. 이제 Windows 탐색기의 어느 폴더에서나 PowerShell 6.1의 시스템 수준 설치를 열 수 있습니다.Now you can open your system-wide installation of PowerShell 6.1 from any folder in the Windows Explorer:

PowerShell 6을 위한 셸 상황에 맞는 메뉴

혜택Goodies

Windows 바로 가기 점프 목록의 “관리자 권한으로 실행”"Run as Administrator" in the Windows shortcut jump list

@bergmeister 덕분에 이제 “관리자 권한으로 실행”이 PowerShell Core 바로 가기의 점프 목록에 포함됩니다.Thanks to @bergmeister, the PowerShell Core shortcut's jump list now includes "Run as Administrator":

PowerShell 6 점프 목록의 관리자 권한으로 실행

cd -가 이전 디렉터리를 반환cd - returns to previous directory

C:\Windows\System32> cd C:\
C:\> cd -
C:\Windows\System32>

또는 Linux에서:Or on Linux:

PS /etc> cd /usr/bin
PS /usr/bin> cd -
PS /etc>

또한 cdcd --$HOME으로 변경합니다.Also, cd and cd -- change to $HOME.

Test-Connection

@iSazonov 덕분에 Test-Connection cmdlet이 PowerShell Core에 포트되었습니다.Thanks to @iSazonov, the Test-Connection cmdlet has been ported to PowerShell Core.

Update-Help, 관리자가 아님Update-Help as non-admin

많은 요청에 의해 Update-Help는 더 이상 관리자 권한으로 실행될 필요가 없습니다.By popular demand, Update-Help no longer needs to be run as an administrator. Update-Help는 이제 기본 제공되어 사용자 범위 폴더에 대한 도움말을 저장합니다.Update-Help now defaults to saving help to a user-scoped folder.

PSCustomObject의 새 메서드/속성New methods/properties on PSCustomObject

@iSazonov 덕분에 새 메서드 및 속성을 PSCustomObject에 추가했습니다.Thanks to @iSazonov, we've added new methods and properties to PSCustomObject. PSCustomObject에는 이제 다른 개체처럼 Count/Length 속성이 포함됩니다.PSCustomObject now includes a Count/Length property like other objects.

$PSCustomObject = [pscustomobject]@{foo = 1}

$PSCustomObject.Length
1
$PSCustomObject.Count
1

이 작업에는 PSCustomObject 항목에서 작동하고 필터링할 수 있도록 허용하는 ForEachWhere 메서드도 포함됩니다.This work also includes ForEach and Where methods that allow you to operate and filter on PSCustomObject items:

$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
  1

Where-Object -Not

@SimonWahlin 덕분에 -Not 매개 변수를 Where-Object에 추가했습니다.Thanks to @SimonWahlin, we've added the -Not parameter to Where-Object. 이제 존재하지 않는 속성 또는 null/비어 있는 속성 값에 대한 파이프라인에서 개체를 필터링할 수 있습니다.Now you can filter an object at the pipeline for the non-existence of a property, or a null/empty property value.

예를 들어 이 명령은 정의된 모든 종속 서비스가 없는 모든 서비스를 반환합니다.For example, this command returns all services that don't have any dependent services defined:

Get-Service | Where-Object -Not DependentServices

New-ModuleManifest는 BOM이 없는 UTF-8 문서를 만듭니다.New-ModuleManifest creates a BOM-less UTF-8 document

PowerShell 6.0에서 BOM이 없는 UTF-8로 이동하여 UTF-16 대신 BOM이 없는 UTF-8 문서를 만들도록 New-ModuleManifest cmdlet을 업데이트했습니다.Given our move to BOM-less UTF-8 in PowerShell 6.0, we've updated the New-ModuleManifest cmdlet to create a BOM-less UTF-8 document instead of a UTF-16 one.

PSMethod에서 대리자로 변환Conversions from PSMethod to Delegate

@powercode 덕분에 이제 대리자로의 PSMethod 변환을 지원하게 되었습니다.Thanks to @powercode, we now support the conversion of a PSMethod into a delegate. 이를 통해 PSMethod [M]::DoubleStrLen을 대리자 값으로 [M]::AggregateString에 전달하는 등의 작업을 수행할 수 있습니다.This allows you to do things like passing PSMethod [M]::DoubleStrLen as a delegate value into [M]::AggregateString:

class M {
    static [int] DoubleStrLen([string] $value) { return 2 * $value.Length }

    static [long] AggregateString([string[]] $values, [func[string, int]] $selector) {
        [long] $res = 0
        foreach($s in $values){
            $res += $selector.Invoke($s)
        }
        return $res
    }
}

[M]::AggregateString((gci).Name, [M]::DoubleStrLen)

이러한 변경 사항에 대한 자세한 내용은 PR #5287을 확인하세요.For more info on this change, check out PR #5287.

Measure-Object의 표준 편차Standard deviation in Measure-Object

@CloudyDino 덕분에 StandardDeviation 속성을 Measure-Object에 추가했습니다.Thanks to @CloudyDino, we've added a StandardDeviation property to Measure-Object:

Get-Process | Measure-Object -Property CPU -AllStats
Count             : 308
Average           : 31.3720576298701
Sum               : 9662.59375
Maximum           : 4416.046875
Minimum           :
StandardDeviation : 264.389544720926
Property          : CPU

GetPfxCertificate -Password

@maybe-hello-world 덕분에 Get-PfxCertificate는 이제 SecureString을 사용하는 Password 매개 변수를 가집니다.Thanks to @maybe-hello-world, Get-PfxCertificate now has the Password parameter, which takes a SecureString. 이를 통해 비대화형으로 사용할 수 있습니다.This allows you to use it non-interactively:

$certFile = '\\server\share\pwd-protected.pfx'
$certPass = Read-Host -AsSecureString -Prompt 'Enter the password for certificate: '

$certThumbPrint = (Get-PfxCertificate -FilePath $certFile -Password $certPass ).ThumbPrint

more 함수 제거Removal of the more function

과거에 PowerShell은 Windows에서 more.com을 래핑한 more라는 함수를 제공했습니다.In the past, PowerShell shipped a function on Windows called more that wrapped more.com. 해당 함수는 이제 제거되었습니다.That function has now been removed.

또한 help 함수가 Windows 또는 비Windows 플랫폼에서 $env:PAGER에 의해 지정된 시스템의 기본 호출기에서 more.com을 사용하도록 변경되었습니다.Also the help function changed to use more.com on Windows, or the system's default pager specified by $env:PAGER on non-Windows platforms.

cd DriveName:은 이제 해당 드라이브에서 현재 작업 디렉터리에 사용자를 반환합니다.cd DriveName: now returns users to the current working directory in that drive

이전에는 Set-Location 또는 cd를 사용하여 PSDrive로 돌아가면 해당 드라이브의 기본 위치로 사용자를 보냈습니다.Previously, using Set-Location or cd to return to a PSDrive sent users to the default location for that drive.

@mcbobke 덕분에 이제는 해당 세션에 대해 마지막으로 알려진 현재 작업 디렉터리로 사용자를 보냅니다.Thanks to @mcbobke, users are now sent to the last known current working directory for that session.

Windows PowerShell 형식 가속기Windows PowerShell type accelerators

Windows PowerShell에서 해당 형식과 손쉽게 작업할 수 있도록 다음과 같은 형식 가속기를 포함시켰습니다.In Windows PowerShell, we included the following type accelerators to make it easier to work with their respective types:

  • [adsi]: System.DirectoryServices.DirectoryEntry[adsi]: System.DirectoryServices.DirectoryEntry
  • [adsisearcher]: System.DirectoryServices.DirectorySearcher[adsisearcher]: System.DirectoryServices.DirectorySearcher
  • [wmi]: System.Management.ManagementObject[wmi]: System.Management.ManagementObject
  • [wmiclass]: System.Management.ManagementClass[wmiclass]: System.Management.ManagementClass
  • [wmisearcher]: System.Management.ManagementObjectSearcher[wmisearcher]: System.Management.ManagementObjectSearcher

이러한 형식 가속기는 PowerShell 6에는 포함되지 않았으나, Windows에서 실행 중인 PowerShell 6.1에는 추가되었습니다.These type accelerators were not included in PowerShell 6, but have been added to PowerShell 6.1 running on Windows.

이러한 형식은 AD 및 WMI 개체를 손쉽게 구성하는 데 유용합니다.These types are useful in easily constructing AD and WMI objects.

예를 들어, LDAP를 사용하여 쿼리할 수 있습니다.For example, you can query using LDAP:

[adsi]'LDAP://CN=FooUse,OU=People,DC=contoso,DC=com'

다음 예제에서는 Win32_OperatingSystem CIM 개체를 만듭니다.Following example creates a Win32_OperatingSystem CIM object:

[wmi]"Win32_OperatingSystem=@"
SystemDirectory : C:\WINDOWS\system32
Organization    : Contoso IT
BuildNumber     : 18234
RegisteredUser  : Contoso Corp.
SerialNumber    : 12345-67890-ABCDE-F0123
Version         : 10.0.18234

이 예제에서는 Win32_OperatingSystem 클래스에 대한 ManagementClass 개체를 반환합니다.This example returns a ManagementClass object for Win32_OperatingSystem class.

[wmiclass]"Win32_OperatingSystem"
   NameSpace: ROOT\cimv2

Name                                Methods              Properties
----                                -------              ----------
Win32_OperatingSystem               {Reboot, Shutdown... {BootDevice, BuildNumber, BuildType, Caption...}

모든 -LiteralPath 매개 변수에 대한 -lp 별칭-lp alias for all -LiteralPath parameters

@kvprasoon 덕분에 이제 -LiteralPath 매개 변수가 있는 모든 기본 제공 PowerShell cmdlet에 대해 매개 변수 별칭 -lp가 있습니다.Thanks to @kvprasoon, we now have a parameter alias -lp for all the built-in PowerShell cmdlets that have a -LiteralPath parameter.

주요 변경 내용Breaking Changes

Windows의 MSI 기반 설치 경로MSI-based installation paths on Windows

Windows에서 MSI 패키지는 이제 다음 경로에 설치됩니다.On Windows, the MSI package now installs to the following path:

  • $env:ProgramFiles\PowerShell\6\ 6.x의 안정적인 설치용$env:ProgramFiles\PowerShell\6\ for the stable installation of 6.x
  • $env:ProgramFiles\PowerShell\6-preview\ 6.x의 미리 보기 설치용$env:ProgramFiles\PowerShell\6-preview\ for the preview installation of 6.x

이 변경 내용으로 PowerShell Core는 Microsoft Update에서 업데이트/제공될 수 있습니다.This change ensures that PowerShell Core can be updated/serviced by Microsoft Update.

자세한 내용은 PowerShell RFC0026을 확인하세요.For more information, check out PowerShell RFC0026.

원격 분석은 환경 변수를 통해서만 사용하지 않도록 설정할 수 있습니다.Telemetry can only be disabled with an environment variable

PowerShell Core는 시작할 때 기본 원격 분석 데이터를 Microsoft로 보냅니다.PowerShell Core sends basic telemetry data to Microsoft when it is launched. 데이터에는 OS 이름, OS 버전 및 PowerShell 버전이 포함됩니다.The data includes the OS name, OS version, and PowerShell version. 이 데이터를 사용하면 PowerShell이 사용되는 환경을 더 잘 이해할 수 있으며, 새 기능 및 수정 사항의 우선 순위를 지정할 수 있습니다.This data allows us to better understand the environments where PowerShell is used and enables us to prioritize new features and fixes.

이 원격 분석을 옵트아웃하려면 환경 변수 POWERSHELL_TELEMETRY_OPTOUTtrue, yes 또는 1로 설정합니다.To opt-out of this telemetry, set the environment variable POWERSHELL_TELEMETRY_OPTOUT to true, yes, or 1. 원격 분석을 사용하지 않도록 설정하는 파일 DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY의 삭제를 더 이상 지원하지 않습니다.We no longer support deletion of the file DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY to disable telemetry.

Unix 플랫폼에서 PowerShell 원격 기능의 HTTP를 통해 기본 인증 허용 안 함Disallowed Basic Auth over HTTP in PowerShell Remoting on Unix platforms

암호화되지 않은 트래픽 사용을 방지하려면 Unix 플랫폼의 PowerShell 원격 기능은 이제 NTLM/Negotiate 또는 HTTPS를 사용해야 합니다.To prevent the use of unencrypted traffic, PowerShell Remoting on Unix platforms now requires usage of NTLM/Negotiate or HTTPS.

이러한 변경 사항에 대한 자세한 내용은 문제 #6779를 확인하세요.For more information on these changes, check out Issue #6779.

Add-Type에서 지원되는 언어로 VisualBasic 제거Removed VisualBasic as a supported language in Add-Type

이전에는 Add-Type cmdlet을 사용하여 Visual Basic 코드를 컴파일할 수 있었습니다.In the past, you could compile Visual Basic code using the Add-Type cmdlet. Visual Basic은 Add-Type과는 거의 사용되지 않았습니다.Visual Basic was rarely used with Add-Type. PowerShell의 크기를 줄이기 위해 이 기능을 제거했습니다.We removed this feature to reduce the size of PowerShell.

CommandTypes.WorkflowWorkflowInfoCleaned 사용 정리Cleaned up uses of CommandTypes.Workflow and WorkflowInfoCleaned

이러한 변경 사항에 대한 자세한 내용은 PR #6708을 확인하세요.For more information on these changes, check out PR #6708.