영어로 읽기

다음을 통해 공유


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 매개 변수
    • 에 대한 Get-WinEvent 매개 변수
    • 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!)에게 감사드립니다.)
  • -ConfigurationFile 파일에 정의된 세션 구성으로 새 프로세스를 시작할 수 있도록 pwsh.pssc 매개 변수 추가(#17447)
  • 비 Windows 플랫폼에서 New-PSSessionConfigurationFile 사용에 대한 지원 추가(#17447)

업데이트된 cmdlet

  • -HttpVersion 매개 변수를 모든 웹 cmdlet에 추가(#15853)(@hayhay27!)에게 감사드립니다.)
  • 개방형 입력 태그의 웹 cmdlet에 대한 지원 추가(#16193)(@farmerau!)에게 감사드립니다.)
  • ConvertTo-Json -Depth가 최대 100을 허용하도록 수정(#16197)(@KevRitchie!)에게 감사드립니다.)
  • Invoke-Command 식을 사용하여 $using:를 호출할 때 변수 처리 개선(#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-TimeSpan 매개 변수 추가(#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- 스크립트 블록에 블록을 피어로 cleanbeginprocess 추가하고 end 리소스를 쉽게 정리할 수 있도록 합니다.

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

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

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

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

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

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

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

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

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

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