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-String
및Out-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!)에게 감사드립니다.) -
-StrictMode
를Invoke-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
- 스크립트 블록에 블록을 피어로clean
begin
process
추가하고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
실험적 기능은 더 이상 지원되지 않습니다.
실험적 기능에 대한 자세한 내용은 실험적 기능 사용을 참조하세요.
PowerShell