다음을 통해 공유


PowerShell 7.4의 새로운 기능

PowerShell 7.4.7에는 다음과 같은 기능, 업데이트 및 호환성에 영향을 미치는 변경 내용이 포함됩니다. PowerShell 7.4.7은 .NET 8.0.12를 기반으로 합니다.

전체 변경 목록은 GitHub 리포지토리의 CHANGELOG 참조하세요.

주요 변경 내용

  • Nano 서버 Docker 이미지는 이 릴리스에 사용할 수 없습니다.
  • ProgressAction 매개 변수를 공통 매개 변수에 추가했습니다.
  • 인수가 빈 문자열일 때, ArgumentNullException 대신 ArgumentException 을 throw하도록 일부 PowerShell API를 업데이트합니다(#19215) ().
  • #requires -pssnapin 관련된 코드 제거(#19320)
  • 이제 Test-Json Newtonsoft.Json.Schema 대신 JsonSchema.NET 사용합니다.
    • 이 변경으로 Test-Json 더 이상 이전 초안 4 스키마를 지원하지 않습니다. (#18141) (@gregsdennis!)감사합니다. JSON 스키마에 대한 자세한 내용은 JSON 스키마 설명서를 참조하세요. 또한 주석이 있는 JSON 및 JSONC 파일에 대한 Test-Json 중단합니다.
    • ConvertFrom-Json 지원은 여전히 Newtonsoft.Json.Schema를 사용하므로 주석이 있는 JSON 파일을 변환할 수 있습니다.
  • 이제 Test-Connection 출력에 TCP 연결 테스트에 대한 자세한 정보가 포함됩니다.
  • .NET은 Test-Connection영향을 주는 변경 사항을 도입했습니다. 이제 cmdlet은 사용자 지정 버퍼 크기(#20369)를 사용할 때 Linux 플랫폼에서 sudo 사용해야 하는 필요성에 대한 오류를 반환합니다.
  • 실험적 기능 PSNativeCommandPreserveBytePipe 이제 주류가 되었습니다. 이제 PowerShell은 네이티브 명령의 stdout 스트림을 파일로 리디렉션하거나 바이트 스트림 데이터를 네이티브 명령의 stdin 스트림으로 파이핑할 때 바이트 스트림 데이터를 유지합니다.
  • Resolve-Path에서 상대 경로가 처리되는 방식을 변경할 때 RelativeBasePath 매개 변수를 사용 (#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)
  • 형식 제한 변수 할당, 중첩된 Hashtables 등에 대한 해시 테이블 키 완성 개선(#17660)
  • 외부 애플리케이션 출력을 문자열로 유추(#19193)
  • ValidateRange 특성(#17750)에서 허용되지 않는 값을 제외하도록 열거형에 대한 매개 변수 완성을 업데이트합니다. (@fflaten!)감사합니다.)
  • 동적 매개 변수 완성 수정(#19510)
  • Data 문에서 할당한 변수에 대한 완성 추가(#19831)
  • 네이티브 명령 사용 사례가 중단되지 않도록 Windows 시스템에서 확장되는 물결표(~)를 $home으로 수정합니다 (#21529).

웹 'cmdlet' 개선 사항

모든 웹 cmdlet 개선 작업에 대해 @CarloToso 및 다른 분들께 깊은 감사를 드립니다.

  • Brotli(#17955)를 포함하도록 웹 cmdlet의 압축 해제를 수정합니다.(@iSazonov!))
  • Webcmdlet은 리디렉션 코드에 308을 추가하고, 작은 정리를 수행합니다 (#18536).
  • 다운로드가 완료되거나 취소될 때 Invoke-WebRequest 진행률 표시줄 렌더링 완료(#18130)
  • 상태 코드가 429인 경우 웹 cmdlet은 응답 헤더에서 재시도 간격을 가져옵니다(#18717).
  • 웹 cmdlet은 기본 문자 집합 인코딩을 UTF8(#18219)로 설정합니다.
  • 변경되지 않도록 WebSession.MaximumRedirection을 유지 (#19190)
  • WebCmdlet은 XML 선언을 구문 분석하여 인코딩 값(있는 경우)을 가져옵니다. (#18748)
  • 인코딩 없이 webcmdlet에서 xml -Body 사용 수정(#19281)
  • WebCmdlet의 기본 콘텐츠 형식에 대해 PUT 메서드 동작을 POST 1로 조정합니다(#19152)
  • WebCmdlet의 헤더에서 ContentType을 고려합니다(#19227)
  • web cmdlet에 -PreserveHttpMethodOnRedirect 추가하여 원래 HTTP 메서드를 유지할 수 있습니다(#18894).
  • Webcmdlet은 https에서 http 리디렉션(#18595)에 오류를 표시합니다.
  • Web cmdlet에 AllowInsecureRedirect 스위치 추가(#18546)
  • 콘텐츠 길이를 알 수 없는 경우 웹 cmdlet에서 자세한 정보 표시 메시지 개선(#19252)
  • Invoke-WebRequest 응답의 링크에 대한 상대 URI 빌드(#19092)
  • WebCmdlet에서 -CustomMethod POST 대한 리디렉션 수정(#19111)
  • Webcmdlet에서 이전 응답 삭제(#19117)
  • Invoke-WebRequest xml 및 json 오류 형식 개선(#18837)
  • WebCmdlet의 OutFile 및 InFile 매개 변수에 ValidateNotNullOrEmpty를 로 추가합니다 (#19044)
  • HttpKnownHeaderNames 업데이트 헤더 목록(#18947)
  • Invoke-RestMethod -FollowRelLink 쉼표가 포함된 링크 수정(#18829)
  • 웹 cmdlet에서 리디렉션 및 KeepAuthorization을 관리하는 버그 수정(#18902)
  • HttpResponseExceptionStatusCode 추가 (#18842)
  • Web Cmdlet(#19249)에서 HTTP 영구 연결을 지원합니다 (@stevenebutler!)에게 감사드립니다).
  • 작은 정리 Invoke-RestMethod (#19490)
  • 올바른 HTTP 버전을 표시하도록 WebCmdlet의 자세한 정보 표시 메시지 개선(#19616)
  • WebCmdlets(#19467)에서 MultipartFileContentFileNameStar 추가
  • WebCmdlet의 HTTP 상태를 409에서 429로 수정하여 Retry-After 헤더에서 재시도 간격을 가져옵니다. (#19622) (감사 @mkht!)
  • -TimeoutSec을(를) -ConnectionTimeoutSeconds으로 변경하고 웹 cmdlet에 -OperationTimeoutSeconds를 추가합니다(#19558). 다른 cmdlet에도 감사드립니다 @stevenebutler!).
  • WebCmdlet(#19330)에서 데이터를 읽는 동안 연결이 멈출 때 Ctrl+c를 지원합니다. (감사합니다 @stevenebutler!))
  • WebCmdlet에서 Unix 도메인 소켓 지원(#19343)

기타 cmdlet 개선 사항

  • Test-Connection 이제 사용자 지정 버퍼 크기(#20369)를 사용할 때 Linux 플랫폼에서 sudo 사용해야 하는 필요성에 대한 오류를 반환합니다.
  • Format 명령에 출력 형식 추가 (#18746) (감사합니다 @MartinGC94!))
  • Get-WinEvent (#17948)에 출력 형식 속성 추가 (감사합니다 @MartinGC94!))
  • PathLiteralPath 매개 변수를 Test-Json cmdlet(#19042)에 추가합니다. 감사합니다 @ArmaanMcleod!)
  • ConvertTo-CsvExport-Csv cmdlet(#19108)에 NoHeader 매개 변수를 추가하십시오 (감사합니다, @ArmaanMcleod!))
  • 추가 확인 및 WhatIf 매개 변수를 Stop-Transcript(#18731) (감사 @JohnLBevan!)
  • Get-Command FuzzyMinimumDistance 매개 변수 추가(#18261)
  • 인코딩 매개 변수가 PowerShell(#19298)에서 ANSI 인코딩을 수행할 수 있도록 합니다(@CarloToso!)
  • Copy-Item 진행 상황 업데이트(#18735)
  • Update-Help은 이제 미국이 아닌 시스템에서 기본 문화 설정을 사용할 때 오류를 보고합니다. (#17780) (감사 @dkaszews!)
  • 완료된 진행률 레코드를 만들 때 활동을 요구하지 마세요 (#18474) (감사합니다 @MartinGC94!))
  • Get-Content cmdlet의 매개 변수 -Head-Tail (#19715)에 대해 음수 값을 허용하지 않도록 설정합니다 (감사합니다 @CarloToso!)).
  • 현재 문화권이 언어(#19765)와 연결되지 않은 경우 Update-Help이 적절한 오류를 발생시키도록 하십시오 (@josea!)에게 감사합니다).
  • Select-Object cmdlet에서 -Skip-SkipLast 매개 변수의 결합을 허용합니다. (#18849) (감사 @ArmaanMcleod!)
  • Get-SecureRandom cmdlet 추가(#19587)
  • Set-Clipboard -AsOSC52의 원격 사용용(#18222) 감사합니다 @dkaszews!)
  • 상대 경로 확인(#19171)의 속도 향상(Resolve-Path) (감사합니다 @MartinGC94!))
  • Select-ObjectGet-Unique cmdlet에 스위치 매개 변수 -CaseInsensitive을(를) 추가했습니다 (#19683) (감사합니다, @ArmaanMcleod!))
  • unix(#19824)에서 sudo를 통해 실행되지 않을 때 오류와 함께 Restart-ComputerStop-Computer 실패합니다.

엔진 개선 사항

$PSStyle의 업데이트

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

기타 엔진 업데이트

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

실험적 기능

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

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

다음과 같은 실험적 기능이 주류가 되었습니다.

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

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