PowerShell 7.3의 새로운 기능

PowerShell 7.3은 .NET 7.0을 기반으로 구축된 안정적인 다음 릴리스입니다.

PowerShell 7.3에는 다음과 같은 기능, 업데이트, 호환성이 손상되는 변경이 포함되어 있습니다.

호환성이 손상되는 변경 및 개선 사항

  • 이 릴리스에서는 Windows API가 규정 준수를 위해 업데이트되거나 제거되었습니다. 즉, PowerShell 7.3이 Windows 7에서 실행되지 않습니다. Windows 7은 더 이상 지원되지 않지만 이전 빌드는 Windows 7에서 실행할 수 있습니다.
  • Hyper-V용 PowerShell Direct는 Windows 10, 버전 1809 이상에서만 지원됩니다.
  • .NET 7의 의도적인 호환성이 손상되는 변경으로 인해 Test-Connection이 손상되었습니다. #17018로 추적됩니다.
  • 스크립트 블록에 clean 블록을 begin, process, end의 피어로 추가하여 간편한 리소스 정리 허용(#15177)
  • $PSStyle.OutputRendering의 기본값을 Host로 변경
  • Out-StringOut-File의 문자열 입력을 변경하지 않고 유지(#17455)
  • System.Security.AccessControl.ObjectSecurity의 형식 데이터 정의를 Microsoft.PowerShell.Security 모듈로 이동(#16355)(@iSazonov!)에게 감사드립니다.)
    • 이러한 변경 이전에 사용자는 Microsoft.PowerShell.Security 모듈을 반드시 가져오기 해 System.Security.AccessControl.ObjectSecurity 인스턴스를 위해 정의된 코드를 사용하지 않아도 됩니다.
    • 이러한 변경 이후 사용자는 Microsoft.PowerShell.Security 모듈을 반드시 가져오기 해 해당 속성과 코드 메서드를 사용해야 합니다.

탭 완성 개선

  • PowerShell 7.3에는 기본적으로 예측 IntelliSense를 사용하도록 설정하는 PSReadline 2.2.6이 포함되어 있습니다. 자세한 내용은 about_PSReadLine을 참조하세요.
  • ValidateScriptAttribute에 대해 지정된 스크립트 블록 내에서 탭 완성 기능을 수정 (#14550)(@MartinGC94!)에게 감사드립니다.)
  • break/continue 이후 루프 레이블의 탭 완성 추가(#16438)(@MartinGC94!)에게 감사드립니다.)
  • 여러 시나리오에서 해시 테이블 완료 개선(#16498)(@MartinGC94!)에게 감사드립니다.)
    • 매개 변수 스플래팅
    • Invoke-CimMethod에 대한 Arguments 매개 변수
    • Get-WinEvent에 대한 FilterHashtable 매개 변수
    • CIM cmdlet에 대한 Property 매개 변수
    • 멤버 완료 시나리오에서 중복 항목 제거
  • 네트워크 공유(UNC 경로) 완료 시 포워드 슬래시 지원(#17111)(@sba923!)에게 감사드립니다.)
  • 멤버 자동 완료 개선(#16504)(@MartinGC94!)에게 감사드립니다.)
  • 매개 변수의 열거형에 대한 ValidateSet 완료 우선 순위 지정(#15257)(@MartinGC94!)에게 감사드립니다.)
  • 형식 매개 변수를 사용하여 제네릭 메서드에 대한 형식 유추 지원 추가(#16951)(@MartinGC94!)에게 감사드립니다.)
  • 형식 유추 및 완성 개선(#16963)(@MartinGC94!)에게 감사드립니다.)
    • ForEach-Object -MemberName에 대한 완료 결과에 메서드가 표시되도록 허용
    • ([void]("")) 같이 void를 반환하는 식에서 완료를 방지
    • 클래스 완성이 AST를 기반으로 하는 경우 기본이 아닌 클래스 생성자가 표시되도록 허용
  • $_에 대한 유형 추론 개선(#17716)(@MartinGC94!)에게 감사드립니다.)
  • ICollection의 수정 유형 추론(#17752)(@MartinGC94!)에게 감사드립니다.)
  • 변수 완료 시 브레이스 제거 방지(#17751)(@MartinGC94!)에게 감사드립니다.)
  • 사전에 대한 인덱스 수식 완료 추가(#17619)(@MartinGC94!)에게 감사드립니다.)
  • 속성 토큰에 대한 수정 유형 완료(#17484)(@MartinGC94!)에게 감사드립니다.)
  • 동적 매개변수 탭 완료 개선(#17661)(@MartinGC94!)에게 감사드립니다.)
  • 값 앞에 매개변수 완료 시 바인딩 위치 매개변수 방지(#17693)(@MartinGC94!)에게 감사드립니다.)

향상된 오류 처리

  • 리디렉션을 사용하여 $?를 명령 식에 대해 올바르게 설정(#16046)
  • $PSNativeCommandUseErrorActionPreference를 사용할 때 캐스팅 오류 수정(#15993)
  • 네이티브 명령 오류 처리가 선택적으로 ErrorActionPreference를 적용하도록 함(#15897)
  • 0이 아닌 종료 코드 ErrorRecord에 대한 실행 파일 경로를 TargetObject로 지정(#16108)(@rkeithhill!)에게 감사드립니다.)

세션 및 원격 개선 사항

  • OpenSSH 옵션을 직접 전달할 수 있도록 SSH 명령을 통해 PSRP에 -Options를 추가(#12802)(@BrannenGH!)에게 감사드립니다.)
  • .pssc 파일에 정의된 세션 구성으로 새 프로세스를 시작할 수 있도록 pwsh-ConfigurationFile 매개 변수 추가(#17447)
  • 비 Windows 플랫폼에서 New-PSSessionConfigurationFile 사용에 대한 지원 추가(#17447)

업데이트된 cmdlet

  • -HttpVersion 매개 변수를 모든 웹 cmdlet에 추가(#15853)(@hayhay27!)에게 감사드립니다.)
  • 개방형 입력 태그의 웹 cmdlet에 대한 지원 추가(#16193)(@farmerau!)에게 감사드립니다.)
  • ConvertTo-Json -Depth가 최대 100을 허용하도록 수정(#16197)(@KevRitchie!)@rkeithhill!)에게 감사드립니다.)
  • $using: 식을 사용하여 Invoke-Command를 호출할 때 변수 처리 개선(#16113)(@dwtaber!)에게 감사드립니다.)
  • -StrictModeInvoke-Command에 추가하여 로컬로 명령을 불러올 때 strict 모드를 지정(#16545)(@Thomas-Yu!)에게 감사드립니다.)
  • 스크립트 블록에 clean 블록을 begin, process, end의 피어로 추가하여 간편한 리소스 정리 허용(#15177)
  • -Amended 스위치를 Get-CimClass cmdlet에 추가(#17477)(@iSazonov)에게 감사드립니다.)
  • 순서가 지정된 해시 테이블을 사용하도록 ConvertFrom-Json -AsHashtable 변경(#17405)
  • Out-GridView로 보내기 전에 문자열에서 ANSI 이스케이프 시퀀스 제거(#17664)
  • New-TimeSpanMilliseconds 매개 변수 추가(#17621)(@NoMoreFood!)에게 감사드립니다.)
  • 메서드 정의 및 오버로드를 표시할 때 선택적 매개 변수 표시(#13799)(@eugenesmlv!)에게 감사드립니다.)
  • 현재 작동 중인 사전이 없을 때에도 명령이 계속 실행되도록 허용(#17579)
  • Set-AuthenticodeSignature -TimeStampServer로 HTTPS 지원 추가(#16134)(@Ryan-Hutchison-USAF!)에게 감사드립니다.)
  • 현재 문화를 사용하는 테이블에서 십진수 렌더링(#17650)
  • OrderedDictionary의 주문된 유형 액셀러레이터 추가(#17804)(@fflaten!)에게 감사드립니다.)
  • find.exe를 Windows의 레거시 주장 바인딩 행동에 추가(#17715)
  • -noprofileloadtime 스위치를 pwsh로 추가(#17535)(@rkeithhill!)에게 감사드립니다.)

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

실험적 기능

PowerShell 7.3에서는 다음과 같은 실험적 기능이 주류가 되었습니다.

  • PSAnsiRenderingFileInfo - 이 기능은 멤버를 $PSStyle.FileInfo 추가하고 특정 파일 형식의 색을 설정할 수 있습니다.

  • PSCleanBlock- 스크립트 블록에 피어 beginprocessend 로 블록을 추가하고 clean 리소스 클린 쉽게 수행할 수 있도록 합니다.

  • PSAMSIMethodInvocationLogging - 검사를 위해 AMSI로 전송된 데이터를 확장하여 .NET 메서드 멤버의 모든 호출을 포함합니다.

  • PSNativeCommandArgumentPassing - PowerShell은 이제 네이티브 실행 파일을 호출할 때 문자열을 다시 구성하는 이전 메커니즘 대신 StartProcessInfo 개체의 ArgumentList 속성을 사용합니다.

    PowerShell 7.3.1은 Legacy 스타일의 인수 전달을 사용하는 Windows의 네이티브 명령 목록에 sqlcmd.exe를 추가합니다.

  • PSExec- Windows 이외의 시스템에 대한 호환성을 제공하기 exec 위해 새 Switch-Process cmdlet(별칭exec)을 추가합니다.

    PowerShell 7.3.1은 exec 별칭을 Switch-Process를 래핑하는 함수로 변경했습니다. 이 함수를 사용하면 WithCommand 매개 변수에 잘못 바인딩되었을 수 있는 네이티브 명령에 매개 변수를 전달할 수 있습니다.

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

  • PSNativeCommandErrorActionPreference - 네이티브 명령이 생성한 오류가 PowerShell 오류가 되도록 $PSNativeCommandUseErrorActionPreference 변수를 추가합니다.

PowerShell 7.3에서는 다음과 같은 실험적 기능이 제거되었습니다.

  • PSNativePSPathResolution 실험적 기능은 더 이상 지원되지 않습니다.
  • PSStrictModeAssignment 실험적 기능은 더 이상 지원되지 않습니다.

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