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-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)
- HttpResponseException에 StatusCode 추가 (#18842)
- Web Cmdlet(#19249)에서 HTTP 영구 연결을 지원합니다 (@stevenebutler!)에게 감사드립니다).
- 작은 정리
Invoke-RestMethod
(#19490) - 올바른 HTTP 버전을 표시하도록 WebCmdlet의 자세한 정보 표시 메시지 개선(#19616)
- WebCmdlets(#19467)에서 MultipartFileContent에 FileNameStar 추가
- 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!)) -
Path 및 LiteralPath 매개 변수를
Test-Json
cmdlet(#19042)에 추가합니다. 감사합니다 @ArmaanMcleod!) -
ConvertTo-Csv
및Export-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-Object
및Get-Unique
cmdlet에 스위치 매개 변수-CaseInsensitive
을(를) 추가했습니다 (#19683) (감사합니다, @ArmaanMcleod!)) - unix(#19824)에서 sudo를 통해 실행되지 않을 때 오류와 함께
Restart-Computer
및Stop-Computer
실패합니다.
엔진 개선 사항
$PSStyle
의 업데이트
- Dim 및 DimOff 속성을 추가합니다(#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, FeedbackText및 FeedbackAction 속성을
$PSStyle.Formatting
추가합니다.
- 이 기능은 피드백 메시지의 서식을 변경할 수 있는 FeedbackName, FeedbackText및 FeedbackAction 속성을
- PSModuleAutoLoadSkipOfflineFiles - 모듈 검색은 이제 클라우드 공급자가 디스크에 완전히 없는 것으로 표시된 파일을 건너뜁니다.
- PSCommandWithArgs - 명령에 인수를 단일 문자열로 전달하기 위한 지원 추가
다음과 같은 실험적 기능이 주류가 되었습니다.
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4는 다음과 같은 실험적 기능을 변경했습니다.
- PSCommandNotFoundSuggestion - 이 기능은 이제 하드 코딩된 제안 대신 확장 가능한 피드백 공급자를 사용합니다(#18726)
실험적 기능에 대한 자세한 내용은 실험적 기능 사용참조하세요.
PowerShell