PowerShell 7.4의 새로운 기능
PowerShell 7.4에는 다음과 같은 기능, 업데이트 및 호환성이 손상되는 변경 내용이 포함되어 있습니다. PowerShell 7.4는 .NET 8.0.0을 기반으로 합니다.
전체 변경 목록은 GitHub 리포지토리의 CHANGELOG를 참조하세요.
호환성이 손상되는 변경
- Nano 서버 Docker 이미지는 이 릴리스에 사용할 수 없습니다.
- Common 매개 변수에 ProgressAction 매개 변수 추가됨
- 인수가 빈 문자열인 경우 ArgumentNullException 대신 ArgumentException을 throw하도록 일부 PowerShell API를 업데이트합니다(#19215)(감사합니다.)@xtqqczze!)
- 관련
#requires -pssnapin
코드 제거(#19320) Test-Json
이제 Newtonsoft.Json.Schema 대신 JsonSchema.NET 사용합니다.- 이제 출력에
Test-Connection
TCP 연결 테스트에 대한 자세한 정보가 포함됩니다. - .NET에 영향을
Test-Connection
주는 변경 내용이 도입되었습니다. 이제 cmdlet은 사용자 지정 버퍼 크기를 사용할 때 Linux 플랫폼에서 사용해야sudo
하는 필요성에 대한 오류를 반환합니다(#20369). - 실험적 기능 PSNativeCommandPreserveBytePipe 가 이제 주류가 되었습니다. 이제 PowerShell은 네이티브 명령의 stdout 스트림을 파일로 리디렉션하거나 바이트 스트림 데이터를 네이티브 명령의 stdin 스트림으로 파이핑할 때 바이트 스트림 데이터를 유지합니다.
- RelativeBasePath 매개 변수를 사용할 때 상대 경로
Resolve-Path
처리 방법 변경(#19755)(감사합니다.@MartinGC94!) - 사용되지 않는 PSv2 코드 제거 - TabExpansion 함수 제거(#18337)
설치 관리자 업데이트
이제 Windows MSI 패키지는 설치 중에 PowerShell 원격 분석을 사용하지 않도록 설정하는 옵션을 제공합니다. 자세한 내용은 명령줄에서 msi 패키지 설치를 참조 하세요.
PSResourceGet 및 PSReadLine의 업데이트된 버전
PowerShell 7.4에는 Microsoft.PowerShell.PSResourceGet v1.0.1이 포함됩니다. 이 모듈은 PowerShellGet v2.2.5 및 PackageManagement v1.4.8.1과 함께 설치됩니다. 자세한 내용은 Microsoft.PowerShell.PSResourceGet에 대한 설명서를 참조하세요.
PowerShell 7.4에는 이제 PSReadLine v2.3.4가 포함됩니다. 자세한 내용은 PSReadLine에 대한 설명서를 참조하세요.
탭 완성 개선
탭 완성을 개선하기 위해 모든 작업에 대한 @MartinGC94 및 다른 사람에게 많은 감사드립니다.
- 빈 배열 식을 사용하여 스크립트에서 첫 번째 명령을 완료할 때 발생하는 문제 해결(#18355)
- 위치 인수 완성 수정(#17796)
- 위치 인수를 완료할 때 기본 매개 변수 집합의 우선 순위 지정(#18755)
- 동적 매개 변수에 대한 의사 바인딩 개선(#18030)
- 해시 테이블 키의 형식 유추 개선(#17907)
- 빈 반환 문에 대한 형식 유추 오류 수정(#18351)
- Get-Random에 대한 형식 유추 개선(#18972)
- 모든 범위 변수에 대한 형식 유추 수정(#18758)
- 파이프라인에서 유추된 형식의 열거형 개선(#17799)
- 열거형을 비교할 때 비교에서 값 완성 추가(#17654)
- 열거형에 대한 속성 할당 완료 추가(#19178)
- PSCustomObject 변수 속성에 대한 완료 수정(#18682)
- 특성 인수에서 멤버 완성 수정(#17902)
- 완료 결과에서 중복 매개 변수 별칭 제외(#19382)
- 기본 형식이 있는 클래스에 대한 클래스 멤버 완성 수정(#19179)
- 키워드 사용 완료 추가(#16514)
- 변수를 완료할 때 TabExpansion2 변수 누수 수정(#18763)
- ScriptBlock 범위에서 변수 완성 사용(#19819)
- foreach 문 변수의 완료 수정(#19814)
- 변수 형식 유추 우선 순위 수정(#18691)
- PowerShell 열거형 클래스에 대한 멤버 완성 수정(#19740)
- 메서드 호출의 인덱스 식에서 배열 리터럴에 대한 구문 분석 수정(#19224)
- 경로 완료 개선(#19489)
- 빈 스크립트 입력에 대한 CompleteInput의 바인딩되지 않은 인덱싱 오류 수정(#19501)
- 변수 완성 성능 향상(#19595)
- 형식 제한 변수 할당, 중첩된 해시 테이블 등에 대한 해시 테이블 키 완성 개선(#17660)
- 외부 애플리케이션 출력을 문자열로 유추(#19193)
- 특성에서 허용되지 않는 값을 제외하도록 열거형에
ValidateRange
대한 매개 변수 완성 업데이트(#17750)(감사합니다@fflaten!). - 동적 매개 변수 완성 수정(#19510)
- Data 문에 의해 할당된 변수에 대한 완성 추가(#19831)
- 네이티브 명령으로 호환성이 손상되는 사용 사례를 방지하기 위해
$home
Windows 시스템에서 타일(~
)을 확장하는 수정(#21529)
웹 cmdlet 개선 사항
웹 cmdlet 개선에 대한 모든 작업에 대한 @CarloToso 및 기타 많은 감사.
- Brotli(#17955)를 포함하도록 웹 cmdlet의 압축 해제 수정(감사)@iSazonov!)
- Webcmdlet이 308을 추가하여 코드 리디렉션 및 소규모 정리(#18536)
- 다운로드가 완료되거나 취소될 때 Invoke-WebRequest에서 진행률 표시줄 렌더링 완료(#18130)
- 상태 코드가 429인 경우 웹 cmdlet은 응답 헤더에서 Retry-After 간격을 가져옵니다(#18717).
- 웹 cmdlet은 기본 문자 집합 인코딩을 UTF8로 설정(#18219)
- 변경 내용에서 WebSession.MaximumRedirection 유지(#19190)
- WebCmdlet은 XML 선언을 구문 분석하여 인코딩 값(있는 경우)을 가져옵니다. (#18748)
- 인코딩 없이 webcmdlet에서 xml -Body 사용 수정(#19281)
- WebCmdlet의 기본 콘텐츠 형식에 대해 PUT 메서드 동작을 POST 1로 조정(#19152)
- WebCmdlet의 헤더에서 ContentType 고려(#19227)
- -PreserveHttpMethodOnRedirect를 웹 cmdlet에 추가하여 원래 HTTP 메서드를 유지하도록 허용(#18894)
- Webcmdlet은 https에서 http 리디렉션에 오류를 표시합니다(#18595).
- Web cmdlet에 AllowInsecureRedirect 스위치 추가(#18546)
- 콘텐츠 길이를 알 수 없는 경우 웹 cmdlet에서 자세한 정보 표시 메시지 개선(#19252)
- 응답
Invoke-WebRequest
의 링크에 대한 상대 URI 빌드(#19092) - WebCmdlet에 대한
-CustomMethod POST
리디렉션 수정(#19111) - Webcmdlet에서 이전 응답 삭제(#19117)
- xml 및 json 오류 형식 개선
Invoke-WebRequest
(#18837) - WebCmdlets의 OutFile 및 InFile 매개 변수에 ValidateNotNullOrEmpty 추가(#19044)
- HttpKnownHeaderNames 업데이트 헤더 목록(#18947)
Invoke-RestMethod -FollowRelLink
쉼표가 포함된 링크 수정(#18829)- 웹 cmdlet에서 리디렉션 및 KeepAuthorization을 관리하여 버그 수정(#18902)
- HttpResponseException에 StatusCode 추가(#18842)
- 웹 Cmdlet에서 HTTP 영구 연결 지원(#19249) (감사합니다. @stevenebutler!)
- 작은 정리
Invoke-RestMethod
(#19490) - 올바른 HTTP 버전을 표시하도록 WebCmdlet의 자세한 정보 표시 메시지 개선(#19616)
- WebCmdlets에서 MultipartFileContent에 FileNameStar 추가(#19467)
- Retry-After 헤더에서 재시도 간격을 얻으려면 WebCmdlet의 HTTP 상태를 409에서 429로 수정합니다. (#19622) (감사합니다. @mkht!)
- 웹 cmdlet으로 변경
-TimeoutSec
및 추가-OperationTimeoutSeconds
(#19558)(다른 cmdlet에 감사드립니다 @stevenebutler!)-ConnectionTimeoutSeconds
) - WebCmdlet에서 데이터를 읽는 동안 연결이 끊어지면 Ctrl+c 지원(#19330)(감사합니다.@stevenebutler!)
- WebCmdlet에서 Unix 도메인 소켓 지원(#19343)
기타 cmdlet 개선 사항
Test-Connection
이제 사용자 지정 버퍼 크기를 사용할 때 Linux 플랫폼에서 사용해야sudo
하는 필요성에 대한 오류를 반환합니다(#20369).- Format 명령에 출력 형식 추가(#18746) (감사합니다. @MartinGC94!)
- (#17948)에 대한
Get-WinEvent
출력 형식 특성 추가(감사)@MartinGC94!) - cmdlet에 Path 및 LiteralPath 매개 변수 추가(#19042)(감사합니다.
Test-Json
@ArmaanMcleod!) - NoHeader 매개 변수를
ConvertTo-Csv
cmdlet에Export-Csv
추가(#19108)(감사합니다.@ArmaanMcleod!) - Confirm 및 WhatIf 매개 변수를
Stop-Transcript
에 추가(#18731)(@JohnLBevan!)에게 감사드립니다.) - FuzzyMinimumDistance 매개 변수를
Get-Command
에 추가(#18261) - PowerShell에서 인코딩을 수행할
ANSI
수 있는 인코딩 매개 변수 만들기(#19298)(감사합니다.@CarloToso!) - 진행률
Copy-Item
추가(#18735) - 이제 미국 이외의 시스템에서 암시적 문화권을 사용할 때
Update-Help
가 오류 보고 (#17780)(@dkaszews!)에게 감사드립니다.) - 완료된 진행률 레코드를 만들 때 작업이 필요하지 않음(#18474)(감사합니다.@MartinGC94!)
- cmdlet 매개 변수
-Head
및-Tail
(#19715)에 음Get-Content
수 값 허용(감사)@CarloToso!) Update-Help
현재 문화권이 언어와 연결되지 않은 경우 적절한 오류 throw(#19765) (감사합니다.@josea!)- cmdlet에서 매개 변수와
-SkipLast
매개 변수의-Skip
결합을Select-Object
허용합니다. (#18849) (감사합니다. @ArmaanMcleod!) - cmdlet 추가
Get-SecureRandom
(#19587) Set-Clipboard -AsOSC52
원격 사용(#18222) (감사합니다. @dkaszews!)- 상대 경로 확인 속도 향상
Resolve-Path
(#19171) (감사합니다. @MartinGC94!) - 스위치 매개 변수
-CaseInsensitive
를Select-Object
Get-Unique
cmdlet에 추가(#19683)(감사합니다.@ArmaanMcleod!) Restart-Computer
Stop-Computer
Unix에서 sudo를 통해 실행되지 않을 때 오류가 발생합니다(#19824).
엔진 개선 사항
다음으로 업데이트 $PSStyle
- Dim 및 DimOff 속성 추가(#18653)
- 전경 및 배경 ConsoleColor 값을 ANSI 이스케이프 시퀀스에 매핑하는 PSStyle 클래스에 정적 메서드 추가(#17938)
- 계산 필드의 테이블 머리글은 기본적으로 기울임꼴로 서식이 지정됩니다.
- 원격 호스트에 대한 존중
$PSStyle.OutputRendering
지원 추가(#19601) - 모듈 사용을
CrescendoBuilt
포함하도록 원격 분석 데이터가 업데이트됨(#20371)
기타 엔진 업데이트
- PowerShell 클래스가
NoRunspaceAffinity
특성을 선언할 때 Runspace와 관련이 없도록 설정(#18138) ValidateNotNullOrWhiteSpace
특성 추가(#17191)(@wmentha!)에게 감사드립니다.)- 레거시 인수 전달을 위해 목록에
sqlcmd
추가(#18559) - 함수
cd~
추가(#18308)(@GigaScratch!)에게 감사드립니다.) - 제네릭 형식의 배열 형식 구문 분석 수정(#19205) (감사합니다. @MartinGC94!)
- 디바이스 경로의 루트에서 와일드카드 globbing 수정(#19442) (감사합니다. @MartinGC94!)
- PSModulePath 요소의 위치를 가져오기 위한 공용 API 추가(#19422)
- 형식 변환에 잘못된 문자열 수정(#19560) (감사합니다. @MartinGC94!)
- 많은 중단점이 사용될 때 느린 실행 수정(#14953) (감사합니다. @nohwnd!)
- 관련
#requires -pssnapin
코드 제거(#19320)
실험적 기능
PowerShell 7.4에는 다음과 같은 실험적 기능이 도입되었습니다.
- PSFeedbackProvider - 하드 코드된 제안 프레임워크를 확장 가능한 피드백 공급자로 바꿉니다.
- 이 기능은 피드백 메시지의 서식을 변경할 수 있도록 FeedbackName, FeedbackText 및 FeedbackAction 속성을
$PSStyle.Formatting
추가합니다.
- 이 기능은 피드백 메시지의 서식을 변경할 수 있도록 FeedbackName, FeedbackText 및 FeedbackAction 속성을
- PSModuleAutoLoadSkipOfflineFiles - 이제 모듈 검색은 클라우드 공급자가 디스크에 완전히 없는 것으로 표시된 파일을 건너뜁니다.
- PSCommandWithArgs - 명령에 인수를 단일 문자열로 전달하기 위한 지원 추가
다음과 같은 실험적 기능이 주류가 되었습니다.
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4는 다음과 같은 실험적 기능을 변경했습니다.
- PSCommandNotFoundSuggestion - 이 기능은 이제 하드 코딩된 제안 대신 확장 가능한 피드백 공급자를 사용합니다(#18726)
실험적 기능에 대한 자세한 내용은 실험적 기능 사용을 참조하세요.
PowerShell