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-Json 더 이상 이전 초안 4 스키마를 지원하지 않습니다. (#18141) (@gregsdennis!)JSON 스키마에 대한 자세한 내용은 JSON 스키마 설명서를 참조하세요.
  • 이제 출력에 Test-Connection TCP 연결 테스트에 대한 자세한 정보가 포함됩니다.
  • .NET에 영향을 Test-Connection주는 변경 내용이 도입되었습니다. 이제 cmdlet은 사용자 지정 버퍼 크기를 사용할 때 Linux 플랫폼에서 사용해야 sudo 하는 필요성에 대한 오류를 반환합니다(#20369).
  • 실험적 기능 PSNativeCommandPreserveBytePipe는 이제 기본stream입니다. 이제 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)
  • 키워드(keyword) 사용에 대한 완료 추가(#16514)
  • 변수를 완료할 때 TabExpansion2 변수 누수 수정(#18763)
  • ScriptBlock 범위에서 변수 완성 사용(#19819)
  • foreach 문 변수의 완료 수정(#19814)
  • 변수 형식 유추 우선 순위 수정(#18691)
  • PowerShell 열거형 클래스에 대한 멤버 완성 수정(#19740)
  • 메서드 호출의 인덱스 식에서 배열 리터럴에 대한 구문 분석 수정(#19224)
  • 경로 완료 개선(#19489)
  • 빈 스크립트 입력에 대한 CompleteInput의 바인딩되지 않은 인덱싱 오류 수정(#19501)
  • 변수 완성 성능 향상(#19595)
  • 형식 제한 변수 할당, 중첩된 해시 테이블 등에 대한 해시 테이블 키 완성 개선(#17660)
  • 외부 애플리케이션 출력을 문자열로 유추(#19193)
  • 특성에서 허용되지 않는 값을 제외하도록 열거형에 ValidateRange 대한 매개 변수 완성 업데이트(#17750)(감사합니다@fflaten!).
  • 동적 매개 변수 완성 수정(#19510)
  • Data 문에 의해 할당된 변수에 대한 완성 추가(#19831)

웹 cmdlet 개선 사항

웹 cmdlet 개선에 대한 모든 작업에 대한 @CarloToso 및 기타 많은 감사.

  • Brotli(#17955)를 포함하도록 웹 cmdlet의 압축 해제 수정(감사)@iSazonov!)
  • Webcmdlet은 308을 추가하여 코드 및 작은 클린up(#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!)
  • Small 클린up 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 do기본 소켓 지원(#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!)
  • ConfirmWhatIf 매개 변수를 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!)
  • 스위치 매개 변수 -CaseInsensitiveSelect-ObjectGet-Unique cmdlet에 추가(#19683)(감사합니다.@ArmaanMcleod!)
  • Restart-ComputerStop-Computer Unix에서 sudo를 통해 실행되지 않을 때 오류가 발생합니다(#19824).

엔진 개선 사항

업데이트$PSStyle

  • DimDimOff 속성 추가(#18653)
  • 전경 및 배경 ConsoleColor 값을 ANSI 이스케이프 시퀀스에 매핑하는 PSStyle 클래스에 정적 메서드 추가(#17938)
  • 계산 필드의 테이블 머리글은 기본적으로 기울임꼴로 서식이 지정됩니다.
  • 원격 호스트에 대한 존중 $PSStyle.OutputRendering 지원 추가(#19601)
  • 모듈 사용을 CrescendoBuilt 포함하도록 원격 분석 데이터가 업데이트됨(#20371)

기타 엔진 업데이트

  • PowerShell 클래스가 NoRunspaceAffinity 특성을 선언할 때 Runspace와 관련이 없도록 설정(#18138)
  • ValidateNotNullOrWhiteSpace 특성 추가(#17191)(@wmentha!)에게 감사드립니다.)
  • 레거시 인수 전달을 위해 목록에 sqlcmd 추가(#18559)
  • 함수 cd~ 추가(#18308)(@GigaScratch!)에게 감사드립니다.)
  • 제네릭 형식의 배열 형식 구문 분석 수정(#19205) (감사합니다. @MartinGC94!)
  • 디바이스 경로의 루트에서 야생카드 글로빙 수정(#19442) (감사합니다.@MartinGC94!)
  • PSModulePath 요소의 위치를 가져오기 위한 공용 API 추가(#19422)
  • 형식 변환에 잘못된 문자열 수정(#19560) (감사합니다. @MartinGC94!)
  • 많은 중단점이 사용될 때 느린 실행 수정(#14953) (감사합니다. @nohwnd!)
  • 관련 #requires -pssnapin 코드 제거(#19320)

실험적 기능

PowerShell 7.4에는 다음과 같은 실험적 기능이 도입되었습니다.

  • PSFeedbackProvider - 하드 코드된 제안 프레임워크를 확장 가능한 피드백 공급자로 바꿉니다.
    • 이 기능은 피드백 메시지의 서식을 변경할 수 있도록 FeedbackName, FeedbackTextFeedbackAction 속성을 $PSStyle.Formatting 추가합니다.
  • PSModuleAutoLoadSkipOfflineFiles - 이제 모듈 검색은 클라우드 공급자가 디스크에 완전히 없는 것으로 표시된 파일을 건너뜁니다.
  • PSCommandWithArgs - 명령에 인수를 단일 문자열로 전달하기 위한 지원 추가

다음 실험적 기능은 기본 스트림이 되었습니다.

PowerShell 7.4는 다음과 같은 실험적 기능을 변경했습니다.

실험적 기능에 대한 자세한 내용은 실험적 기능 사용을 참조하세요.