PowerShell 7.0은 이종 환경과 하이브리드 클라우드를 관리하기 위해 구축된 오픈소스 크로스 플랫폼(Windows, macOS, Linux) 버전의 PowerShell입니다.
이번 릴리스에서는 다음과 같은 여러 새로운 기능을 소개합니다:
- 파이프라인 병렬화
ForEach-Object -Parallel - 신규 운영자:
- 삼진 연산자:
a ? b : c - 파이프라인 체인 운영자:
||그리고&& - 널 조건 연산자:
??그리고??=
- 삼진 연산자:
- 오류를 더 쉽게 조사할 수 있도록 단순화되고 동적인 오류 뷰와
Get-Errorcmdlet입니다 - 사용자가 암묵적인 Windows PowerShell 세션에서 모듈을 가져올 수 있도록 하는 호환성 계층입니다
- 자동 신버전 알림
- PowerShell 7에서 DSC 자원을 직접 호출하는 기능(실험 단계)
기능과 수정 사항을 모두 보려면 변경 로그를 참조하세요.
PowerShell을 어디에 설치할 수 있나요?
PowerShell 7은 현재 x64에서 다음과 같은 운영체제를 지원합니다:
- 윈도우 8.1 및 10
- 윈도우 서버 2012, 2012 R2, 2016, 2019
- macOS 10.13+
- 레드햇 엔터프라이즈 리눅스 (RHEL) / CentOS 7
- 페도라 30+
- Debian 9
- Ubuntu LTS 16.04+
- 알파인 리눅스 3.8+
추가로, PowerShell 7.0은 Debian, Ubuntu, ARM64 Alpine Linux의 ARM32 및 ARM64 버전을 지원합니다.
선호하는 운영체제인 Windows, macOS, 또는 Linux 설치 지침을 확인하세요.
공식적으로 지원되지는 않지만, 커뮤니티는 Arch 와 Kali Linux용 패키지도 제공한 적이 있습니다.
비고
현재 Debian 10과 CentOS 8은 WinRM 원격 처리를 지원하지 않습니다. SSH 기반 원격 구축에 대한 자세한 내용은 PowerShell Remoting over SSH를 참조하세요.
지원되는 운영체제와 지원 수명주기에 대한 더 up-to정보는 PowerShell 지원 수명주기를 참조하세요.
PowerShell 7 실행 중
PowerShell 7은 Windows PowerShell과는 별도로 디렉터리에 설치됩니다. 이를 통해 PowerShell 7을 Windows PowerShell 5.1과 나란히 실행할 수 있습니다. PowerShell 6.x의 경우, PowerShell 7은 PowerShell 6.x를 제거하는 인플레이스 업그레이드입니다.
- PowerShell 7은
%programfiles%\PowerShell\7 -
%programfiles%\PowerShell\7폴더가$env:PATH에 추가됩니다.
PowerShell 7 설치 패키지는 이전 버전의 PowerShell 6.x를 업그레이드합니다:
- Windows용 PowerShell 6.x:
%programfiles%\PowerShell\6는%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6는/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6는/usr/local/microsoft/powershell/7
비고
Windows PowerShell에서 PowerShell powershell.exe을 실행하는 실행 파일은 . 버전 6 이상에서는 실행 파일 이름이 병렬 실행 지원을 위해 변경됩니다. PowerShell 7을 실행할 때 새로 추가된 실행 파일 이름은 pwsh.exe. 미리보기 빌드는 7-미리보기 디렉터리 아래에 있지 않고 pwsh 그대로 pwsh-preview 유지됩니다.
Windows PowerShell과의 향상된 하위 호환성
PowerShell 7.0은 .NET Core 3.1로의 전환을 의미하며, 기존 Windows PowerShell 모듈과의 호환성이 크게 향상되었습니다. 여기에는 윈도우의 GUI 기능이 필요한 많은 모듈(예: 와 Show-Command, Out-GridView )과 윈도우에 포함된 역할 관리 모듈이 포함됩니다.
Windows의 경우, 새로운 스위치 매개변수 UseWindowsPowerShell 이 Import-Module추가되었습니다. 이 스위치는 PowerShell 7에서 로컬 Windows PowerShell 프로세스를 사용하여 해당 모듈에 포함된 모든 cmdlet을 암묵적으로 실행하는 프록시 모듈을 생성합니다.
Import-Module에 대한 자세한 정보는
어떤 Microsoft 모듈이 PowerShell 7.0과 호환되는지에 대한 자세한 내용은 모듈 호환성 표를 참조하세요.
병렬 실행 기능이 추가ForEach-Object
ForEach-Object 컬렉션 내 항목을 반복하는 cmdlet은 이제 새로운 Parallel 매개변수와 병렬성을 내장했습니다.
기본적으로 병렬 스크립트 블록은 병렬 작업을 시작한 호출자의 현재 작업 디렉터리를 사용합니다.
이 예시는 로컬 Windows 머신의 5개 시스템 로그에서 50,000개의 로그 항목을 가져옵니다:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
병렬 매개변수는 각 입력 로그 이름에 대해 병렬로 실행되는 스크립트 블록을 지정합니다.
새로운 ThrottleLimit 매개변수는 주어진 시간에 병렬로 실행되는 스크립트 블록의 수를 제한합니다. 기본값은 5입니다.
스크립트 블록 내 현재 입력 객체를 나타내는 변수를 $_ 사용하세요. 스코프를 $using: 사용해 실행 중인 스크립트 블록에 변수 참조를 전달하세요.
ForEach-Object에 대한 자세한 정보는 참고하세요.
3항 연산자
PowerShell 7.0은 단순화 if-else 된 명제처럼 동작하는 삼진 연산자를 도입합니다.
PowerShell의 삼진 연산자는 C# 삼진 연산자 구문을 밀접하게 모델링했습니다:
<condition> ? <if-true> : <if-false>
조건 표현식은 항상 평가되며, 그 결과를 불리언 으로 변환하여 다음에 어떤 분기를 평가할지 결정합니다:
-
<if-true>식이 true이면<condition>식이 실행됩니다. -
<if-false>식이 false이면<condition>식이 실행됩니다.
다음은 그 예입니다.
$message = (Test-Path $path) ? "Path exists" : "Path not found"
이 예시에서 경로가 존재하면 경로 존재가 표시됩니다. 경로가 존재하지 않으면 ' 경로 찾을 수 없음 '이 표시됩니다.
IF 에 대한 자세한 정보는
파이프라인 체인 운영자
PowerShell 7은 조건부 파이프라인을 연쇄화하는 와 || 연산자를 구현합니다&&. 이 연산자들은 PowerShell에서 "파이프라인 체인 연산자"로 알려져 있으며, 와 같은 bashzsh셸의 AND 및 OR 리스트와 유사하며, Windows 명령 셸()의 조건부 처리 기호와 유사합니다.cmd.exe
&& 연산자는 왼쪽 파이프라인이 성공한 경우 오른쪽 파이프라인을 실행합니다. 반대로 || 연산자는 왼쪽 파이프라인이 실패한 경우 오른쪽 파이프라인을 실행합니다.
비고
이러한 연산자는 $? 및 $LASTEXITCODE 변수를 사용하여 파이프라인이 실패했는지 확인합니다. 이렇게 하면 cmdlet 또는 함수뿐만 아니라 네이티브 명령과 함께 사용할 수 있습니다.
여기서 첫 번째 명령이 성공하고 두 번째 명령이 실행됩니다:
Write-Output 'First' && Write-Output 'Second'
First
Second
여기서는 첫 번째 명령어가 실패하고 두 번째 명령어가 실행되지 않습니다:
Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad
여기서는 첫 번째 명령이 성공하고 두 번째 명령이 실행되지 않습니다:
Write-Output 'First' || Write-Output 'Second'
First
여기서 첫 번째 명령이 실패하면 두 번째 명령이 실행됩니다:
Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second
파이프라인 체인 운영자에 대한 자세한 정보는
널 코일러싱, 할당, 조건부 연산자
PowerShell 7에는 Null coalescing 연산자 ??, Null 조건부 할당 ??=, Null 조건부 멤버 접근 연산자 ?. 등이 포함되어 있습니다 ?[].
널-콜레싱 연산자 ??
null-coalescing 연산자는 ?? null이 아니면 왼쪽 피연산자의 값을 반환합니다.
그렇지 않으면 오른쪽 피연산자를 평가하고 결과를 반환합니다. 왼쪽 피연산자가 null이 아닌 것으로 평가되면 ?? 연산자는 오른쪽 피연산자를 평가하지 않습니다.
$x = $null
$x ?? 100
100
다음 예에서는 오른쪽 피연산자는 평가되지 않습니다:
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
널 조건부 할당 연산자 ?? =
널 조건부 할당 연산 ??= 자는 왼쪽 피상자가 null로 평가될 때만 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다. 왼쪽 피연산자가 null이 아닌 것으로 평가되면 ??= 연산자는 오른쪽 피연산자를 평가하지 않습니다.
$x = $null
$x ??= 100
$x
100
다음 예에서는 오른쪽 피연산자가 평가되지 않습니다:
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
널 조건부 접근 연산자 ?. 그리고? [] (실험)
비고
이것은 PSNullConditionalOperators라는 실험적인 기능입니다. 자세한 내용은 실험적 특징 사용법을 참조하세요.
널 조건부 연산자는 해당 피연산자가 비-null로 평가될 때만 멤버 접근, ?.또는 요소 접근 ?[]을 허용합니다; 그렇지 않으면 null을 반환합니다.
비고
PowerShell을 사용하면 ? 변수 이름의 일부가 될 수 있으므로 이러한 연산자를 사용하려면 변수 이름의 정식 사양이 필요합니다. 그래서 변수 이름 주변에 대해 , 예를 들어 ?${a} 변수 이름의 일부${a?}일 때 사용해야 {} 합니다.
다음 예시에서는 멤버 속성 Status 의 값이 반환됩니다:
$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped
다음 예시는 멤버 이름 Status에 접근하지 않고 null을 반환합니다:
$service = $Null
${Service}?.status
마찬가지로, 를 사용하면 ?[]원소의 값을 반환합니다:
$a = 1..10
${a}?[0]
1
그리고 피연산자가 null일 때는 해당 요소가 접근되지 않고 null이 반환됩니다:
$a = $null
${a}?[0]
자세한 정보는 About_Operators.
새 뷰 ConciseView와 cmdlet Get-Error
PowerShell 7.0은 새로운 기본 보기인 ConciseView를 통해 인터랙티브 및 스크립트 오류의 가독성을 높이기 위해 오류 메시지 표시를 향상시킵니다. 뷰는 선호 변수 $ErrorView를 통해 사용자가 선택할 수 있습니다.
ConciseView에서는 스크립트나 파서 오류가 아니면 한 줄의 오류 메시지로 표시됩니다:
Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist
만약 오류가 스크립트 실행 중에 발생하거나 파싱 오류라면, PowerShell은 오류를 포함하는 다중 행 오류 메시지, 포인터, 그리고 해당 행의 오류 위치를 보여주는 오류 메시지를 반환합니다. 터미널이 ANSI 색상 이스케이프 시퀀스(VT100)를 지원하지 않으면 색상이 표시되지 않습니다.
PowerShell 7의 기본 뷰는 ConciseView입니다. 이전 기본 뷰는 NormalView 였고, 선호 변수 $ErrorView를 설정하면 선택할 수 있습니다.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
비고
오류 메시지의 악센트 색상 변경을 지원하기 위해 새로운 속성인 ErrorAccentColor 가 추가 $Host.PrivateData 되었습니다.
새로운 명령어 Get-Error 렛은 원할 때 완전 적정 오류에 대한 완전한 상세 뷰를 제공합니다. 기본적으로 cmdlet은 마지막 오류가 발생한 모든 세부 사항과 내부 예외를 표시합니다.
cmdlet은 Get-Error 내장 변수 $Error를 사용하여 파이프라인에서 입력을 지원합니다.
Get-Error 모든 파이프 오류 표시.
$Error | Get-Error
cmdlet은 Get-Error최신 매개변수를 지원하여 현재 세션에서 표시하고자 하는 오류 수를 지정할 수 있습니다.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Get-Error에 대한 자세한 정보는
새 버전 알림
PowerShell 7은 업데이트 알림을 사용하여 사용자에게 PowerShell 업데이트 존재를 알립니다. PowerShell은 하루에 한 번 온라인 서비스를 쿼리하여 최신 버전을 사용할 수 있는지 확인합니다.
비고
업데이트 체크는 주어진 24시간 동안 첫 세션 중에 이루어집니다. 성능 문제로, 업데이트 검사는 세션 시작 후 3초 후에 시작됩니다. 이 알림은 이후 세션 시작 시에만 표시됩니다.
기본적으로 PowerShell은 버전/브랜치에 따라 두 가지 다른 알림 채널 중 하나를 구독합니다. 지원되는 일반 이용 가능(GA) 버전의 PowerShell은 업데이트된 GA 릴리스에 대한 알림만 반환합니다. 프리뷰 및 릴리스 후보(RC) 릴리스는 프리뷰, RC, GA 릴리스의 업데이트를 알립니다.
업데이트 알림 동작은 $Env:POWERSHELL_UPDATECHECK 환경 변수를 사용하여 변경할 수 있습니다. 지원되는 값은 다음과 같습니다.
-
기본값은 정의하지 않는 것과 같습니다
$Env:POWERSHELL_UPDATECHECK- GA 릴리스는 GA 릴리스에 대한 업데이트를 알립니다.
- 미리 보기/RC 릴리스는 GA 및 미리 보기 릴리스에 대한 업데이트를 알립니다.
- 끄면 업데이트 알림 기능이 꺼집니다
- LTS 는 장기 서비스(LTS) GA 릴리스의 업데이트만 통지합니다
비고
환경 변수 $Env:POWERSHELL_UPDATECHECK 는 처음 설정될 때까지 존재하지 않습니다.
버전 알림을 릴리스에만 LTS 설정하려면:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
버전 알림을 동작 Default 으로 설정하려면:
$Env:POWERSHELL_UPDATECHECK = 'Default'
업데이트 알림에 대한 자세한 정보는
Invoke-DSCResource(실험적 단계)와 함께한 새로운 DSC 리소스 지원
비고
이것은 PSDesiredStateConfiguration.InvokeDscResource라는 실험 기능입니다. 자세한 내용은 실험적 특징 사용법을 참조하세요.
이 cmdlet은 Invoke-DscResource 지정된 PowerShell Desired State Configuration(DSC) 자원의 메서드를 실행합니다.
이 명령어는 구성 문서를 생성하지 않고 DSC 자원을 직접 호출합니다. 이 명령어를 사용하면 구성 관리 제품들이 DSC 자원을 사용하여 Windows나 Linux를 관리할 수 있습니다. 이 cmdlet은 DSC 엔진이 디버깅이 활성화된 상태에서 자원 디버깅을 가능하게 합니다.
이 명령어는 WindowsProcess라는 리소스의 Set 메서드를 호출하며, 지정된 Windows 프로세스를 시작하기 위한 필수 Path 및 Arguments 속성을 제공합니다.
Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
Arguments = ''
}
Invoke-DSCResource에 대한 자세한 정보는
변화 및 개선 사항
파괴적 변경
- 업데이트 알림 지원 LTS 및 기본 채널 (#11132)
- Windows PowerShell (#10697) 업데이트Test-Connection 더 잘 작동하도록 하세요 (감사합니다) @vexx32!)
- 보존 달러? ParenExpression, SubExpression, ArrayExpression (#11040)
- 작업 디렉터리를 Start-Job에서 현재 디렉터리로 설정하세요 (#10920) (감사합니다) @iSazonov!)
- 세션 중 문화 변화를 일관되게 반영하는 $PSCulture (#10138) (감사합니다) @iSazonov!)
엔진 업데이트 및 수정
- 원격 시나리오용 브레이크포인트 API 개선 (#11312)
- PowerShell 클래스 정의가 다른 런스페이스로 유출되는 문제를 수정하기 (#11273)
- 7.0.0-Preview1 (#11258)에 추가된 FirstOrDefault 원시 때문에 발생하는 서식 회귀 수정
- PS7 텔레메트리에서 추적할 추가 마이크로소프트 모듈 (#10751)
- 승인된 기능을 비실험적으로 만들기(#11303)
- 해당되는 경우 TargetObject를 사용하도록 ConciseView 업데이트(#11075)
- CompletionCompleters 공개 메서드에서 NullReferenceException 수정 (#11274)
- 비윈도우 플랫폼에서 아파트 스레드 상태 검사 수정 (#11301)
- 프로세스와 머신 환경 변수를 연결하도록 PSModulePath 설정을 업데이트하세요 (#11276)
- .NET 코어를 3.1.0으로 업그레이드 (#11260)
- $env:PATH (#11141) 앞에 $PSHOME 감지 문제를 수정합니다
- pwsh가 $env:PSModulePath를 상속받아 powershell.exe 올바르게 시작할 수 있도록 허용하세요 (#11057)
- .NET Core 3.1 프리뷰 1로 이동 (#10798)
- 파일 시스템 프로바이더에서 리파스 태그 검사 (#10431) (감사합니다) @iSazonov!)
- 스크립트 로깅에서 CR과 새 줄을 0x23CE 문자로 대체하세요 (#10616)
- AppDomain.CurrentDomain.ProcessExit (#10626)에서 이벤트 핸들러를 등록 해제하여 리소스 누수를 수정합니다.
- Debug, Error, Information, Progress, Verbose 또는 Warning 메시지가 생성될 때 디버거에 진입할 수 있도록 ActionPreference.Break 지원을 추가하세요 (#8205) 감사합니다 @KirkMunro!)
- 확장 프로그램을 .CPL지정하지 않고 PowerShell 내에서 제어 패널 애드인을 활성화하세요. (#9828)
- -split 연산자 (#8960) (감사합니다) (감사합니다) @ece-jacob-scott!)
일반 Cmdlet 업데이트 및 수정
- UnixStat 실험 기능(#11313)에서 파일 변경 날짜를 설정하는 Raspbian에서 문제 해결
- -AsPlainText ConvertFrom-SecureString에 추가하세요 (#11142)
- WinCompat (#11148)에 대한 WindowsPS 버전 검사 추가.
- 일부 WinCompat 시나리오에서의 오류 보고 수정 (#11259)
- 네이티브 바이너리 리졸버(#11032) 추가하세요 (감사합니다) @iSazonov!)
- CJK 문자를 올바르게 존중하도록 문자 폭 계산 업데이트 (#11262)
- macOS용 Unblock-File 추가하기 (#11137)
- Get-PSCallStack에서 회귀 수정 (#11210) (감사합니다) @iSazonov!)
- Job cmdlets (#11194) 사용 시 ScheduledJob 모듈의 자동 로딩 제거
- OutputType을 Get-Error cmdlet에 추가하고 원래 타입명(#10856)을 보존합니다.
- SupportsVirtualTerminal 속성 (#11105)에서 null 참조를 수정합니다
- Get-WinEvent에 한도 체크 추가하세요 (#10648) (감사합니다) @iSazonov!)
- StopUpStreamCommandsException이 -ErrorVariable에 채워지지 않도록 명령 실행 시간을 수정하세요 (#10840)
- 네이티브 명령어를 위해 출력 인코딩을 [Console]::OutputEncoding (#10824)로 설정하세요
- 예시에서 다중 줄 코드 블록 지원 (#10776) (감사합니다) @Greg-Smulko!)
- Select-String 커들렛에 문화 매개변수 추가하세요 (#10943) (감사합니다) @iSazonov!)
- 트레일링 백슬래시Start-Job 작업 디렉터리 경로 수정 (#11041)
- ConvertFrom-Json: 기본적으로 컬렉션 언랩 (#10861) (감사합니다) @danstur!)
- -CaseSensitive 및 -AsHashtable 스위치가 포함된 Group-Object cmdlet에 대소문자 구분 해시테이블을 사용하세요 (#11030) (감사합니다) @vexx32!)
- 경로를 올바른 케이싱으로 재구성할 때 파일 열거에 실패할 경우 예외를 처리합니다 (#11014)
- myCommand 대신 Activity를 표시하도록 ConciseView 수정 (#11007)
- 웹 명령어들이 HTTP 오류 상태를 무시할 수 있도록 허용하세요 (#10466) (감사합니다) @vdamewood!)
- Get-Command로 여러 개의 CommandInfo 파이프 연결 문제를 수정하기 (#10929)
- 윈도우용 Get-Counter cmdlet (#10933) 다시 추가하세요
- [AutomationNull]::Value와 [NullString]::Value를 $nullConvertTo-Json 처리하도록 하세요 (#10957)
- SSH 원격 전송을 위해 ipv6 주소에서 괄호를 제거하세요 (#10968)
- pwsh로 보내는 명령어가 단순한 빈칸일 경우 크래시 수정 (#10977)
- 크로스 플랫폼 Get-Clipboard 및 Set-Clipboard 추가(#10340)
- 파일 시스템 객체의 원래 경로에 추가 후방 슬래시가 없도록 설정하는 수정 (#10959)
- ConvertTo-Json 지원 $null (#10947)
- 윈도우에서 Out-Printer 명령어를 다시 추가하세요 (#10906)
- 공백으로 Start-Job -WorkingDirectory 수정하기 (#10951)
- PSConfiguration.cs (#10963) 설정에 대해 null을 받을 때 기본값을 반환하세요 (감사합니다) @iSazonov!)
- IO 예외를 종료하지 않는 것으로 처리하기 (#10950)
- Out-GridView, Show-Command, Get-Help -ShowWindow 활성화를 위한 GraphicalHost 어셈블리 추가(#10899)
- 파이프라인으로 ComputerName을 Get-HotFix (#10852) (감사합니다) @kvprasoon!)
- 매개변수에 대한 탭 완성 수정을 하여 사용 가능한 공통 매개변수를 표시하도록 합니다 (#10850)
- First() (#10930)를 호출하기 전에 시스템 파일 항목이 반환되는지 먼저 확인하기 위해 GetCorrectCasedPath()를 수정하세요
- 작업 디렉터리를 Start-Job에서 현재 디렉터리로 설정하세요 (#10920) (감사합니다) @iSazonov!)
- TabExpansion2를 -CursorColumn 필요 없게 변경하고 $InputScript.Length (#10849)로 처리하세요
- 호스트가 화면의 행이나 열을 반환하지 못하는 경우(#10938)
- 악센트 색상을 지원하지 않는 호스트의 악센트 색상 사용 수정 (#10937)
- 명령어Update-List 다시 추가하세요 (#10922)
- 업데이트 FWLink ID Clear-RecycleBin (#10925)
- 탭 완료 시 파일 속성을 읽을 수 없으면 파일을 건너뛰세요 (#10910)
- 윈도우용 Clear-RecycleBin 다시 추가하기 (#10909)
- 출력 (#10814)에서 VT 이스케이프 시퀀스를 포함할지 제어하기 위해 추가
$env:__SuppressAnsiEscapeSequences합니다. - 출력Select-String-NoEmphasize 색칠할 수 있는 매개변수를 추가하세요 (#8963) (감사합니다) @derek-xia!)
- Get-HotFix cmdlet (#10740) 다시 추가하세요
- PowerShell을 호스팅하는 애플리케이션에서 Add-Type 사용할 수 있게 만드는 것 (#10587)
- LanguagePrimitives.IsNullLike() (#10781) (감사합니다) @vexx32!)
- Format-Hex에서 혼합 수집 파이프 입력 및 파이프 입력 스트림 처리 개선 (#8674) (감사합니다) @vexx32!)
- 값이 예상 타입과 일치하지 않을 때는 SSHConnection 해시테이블에서 타입 변환을 사용하세요 (#10720) (감사합니다) @SeeminglyScience!)
- -TotalCount 설정Get-Content -ReadCount 0 동작 수정 (#10749) (감사합니다) @eugenesmlv!)
- Get-WinEvent에서 Reword 접근 거부 오류 메시지 (#10639) (감사합니다) @iSazonov!)
- enum이나 타입 제한이 있는 변수 할당에 탭 완성 기능을 활성화하세요 (#10646)
- 사용하지 않는 SourceLength 원격 보호 속성 제거 (#10765)
- ConvertFrom-StringData에 -Delimiter 매개변수를 추가하세요 (#10665) (감사합니다) @steviecoaster!)
- SSH와 함께 Invoke-Command 사용할 때 ScriptBlock에 위치 매개변수를 추가하세요 (#10721) (감사합니다) @machgo!)
- 여러 줄이 있으면 라인 맥락 정보를 표시하되 ConciseView (#10746)의 스크립트 이름은 없음
- 파일 시스템 제공자(#10674)에 \wsl$\ 경로 지원 추가함
- TokenKind.QuestionMark의 누락된 토큰 텍스트를 파서(#10706)에 추가합니다.
- 각 ForEach-Object -Parallel 실행 중인 스크립트의 현재 작업 디렉터리를 호출 스크립트와 같은 위치에 설정하세요. (#10672)
- FindFirstStreamW 및 FindNextStreamW API (#10680) Kernell32.dll로 api-ms-win-core-file-l1-2-2.dll 대신 사용하세요 (감사합니다) @iSazonov!)
- 스크립트 포맷팅을 더 StrictMode 내용으로 조정하기 (#10563)
- New-Service에 -SecurityDescriptorSDDL 매개변수를 추가하세요 (#10483) (감사합니다) @kvprasoon!)
- 정보 출력을 제거하고 핑 사용량을 Test-Connection에 통합하세요 (#10478) (감사합니다) @vexx32!)
- 접근 없이 특수 리파스 포인트를 읽으세요 (#10662) (감사합니다) @iSazonov!)
- 터미널로 직접 Clear-Host 출력(#10681) (감사합니다) @iSazonov!)
- Format-Table와 -Property 그룹화를 위해 줄바움표를 다시 추가하세요 (#10653)
- 빈 문자열 (#10644)을 허용하려면 Get-Random에서 [ValidateNotNullOrEmpty]를 -InputObject에서 제거하세요.
- 제안 시스템 문자열 거리 알고리즘 대문자 구분 안 (#10549) (감사합니다) @iSazonov!)
- 입력 처리에서 null reference exception ForEach-Object -Parallel 수정 (#10577)
- PowerShell 그룹 정책 정의 추가(#10468)
- 콘솔 호스트를 조합 시나리오에서 사용하는 XTPUSHSGR/XTPOPSGR VT 제어 시퀀스를 지원하도록 업데이트하세요. (#10208)
- WorkingDirectory 매개변수 추가Start-Job (#10324) (감사합니다) @davinci26!)
- 중단점 변경이 호스트 런스페이스 디버거(#10503)로 잘못 복제된 이벤트 핸들러를 제거하세요 (감사합니다) @KirkMunro!)
- Microsoft.PowerShell.Commands.NativeMethods p/invoke API(#10417) 에서 api-ms-win-core-job-12-1-0.dll를 Kernell32.dll로 대체하세요 (감사합니다) @iSazonov!)
- 변수 할당 및 -OutVariable에서 New-Service에 대한 잘못된 출력 수정 (#10444) (감사합니다) @kvprasoon!)
- 종료 코드, 명령줄 매개변수, 공백이 포함된 경로와 관련된 전역 도구 문제를 해결하세요 (#10461)
- OneDrive로의 재귀 문제 해결 - FindFirstFileEx()를 SafeFindHandle 타입 (#10405)로 변경하세요
- NVDA 스크린 리더가 활성화되어 있을 경우 Windows에서 PSReadLine을 자동 로딩하지 마세요 (#10385)
- PowerShell로 빌드된 모듈 버전을 7.0.0.0으로 상향 조정 (#10356)
- 같은 이름을 가진 타입이 이미 존재할 경우 오류를 Add-Type에 넣는 것도 추가하세요 (#9609) 감사합니다 @iSazonov!)
Performance
- Parser.SaveError (#11006)에서 클로저 사용을 피하세요
- 새로운 정규 표현식 인스턴스를 생성할 때 캐싱을 개선하세요 (#10657) (감사합니다) @iSazonov!)
- types.ps1xml, typesV3.ps1xml, GetEvent.types.ps1xml (#10898)에서 PowerShell 내장 타입 데이터 처리 개선
- PSConfiguration.ReadValueFromFile을 더 빠르고 메모리 효율적으로 업데이트합니다 (#10839)
- 런스페이스 초기화 (#10569) (감사합니다) 등 약간의 성능 향상을 추가하세요 @iSazonov!)
- ForEach-Object 자주 사용되는 시나리오를 더 빠르게 하고(#10454), 많은 런스페이스에서 ForEach-Object -Parallel 성능 문제를 해결하세요(#10455)
코드 정리
- Microsoft 표준에 맞게 주석 및 요소 텍스트를 변경하기 (#11304)
- Compiler.cs (#10368) (감사합니다) 정리 스타일 문제 @iSazonov!)
- CommaDelimitedStringCollection (#11000)의 사용하지 않는 타입 변환기를 제거하세요 (감사합니다) @iSazonov!)
- InitialSessionState.cs 정리 스타일 (#10865) (감사합니다) @iSazonov!)
- PSSession 클래스 코드 정리 (#11001)
- 작동하지 않는 'Get-Help 처음 실행할 때 Get-Help에서 Update-Help 실행하는 기능(#10974)을 제거하세요
- 스타일 문제 수정 (#10998) (감사합니다) @iSazonov!)
- 정리: 내장 타입 별칭(#10882) 사용하세요 (감사합니다) @iSazonov!)
- 사용하지 않는 설정 키인 ConsolePrompting을 제거하고, ExecutionPolicy 설정 (#10985)를 쿼리할 때 불필요한 문자열 생성을 피하세요.
- 일일 빌드에 대한 업데이트 알림 확인 비활성화 (#10903) (감사합니다) @bergmeister!)
- #10338 (#10808)에서 사라진 디버깅 API 재복원
- 더 이상 사용하지 않는 WorkflowJobSourceAdapter 참조 (#10326) 제거 (감사합니다) @KirkMunro!)
- 점프 리스트 코드에서 PreserveSig 속성을 수정하여 COM 인터페이스를 정리합니다 (#9899) (감사합니다) @weltkante!)
- -ia 공통 파라미터(#10703)-InformationAction의 별칭이 아닌 이유를 설명하는 댓글을 추가해 주세요 (감사합니다) @KirkMunro!)
- InvokeCommandCmdlet.cs 이름을 InvokeExpressionCommand.cs (#10659)로 변경하세요 (감사합니다) @kilasuit!)
- 업데이트 알림과 관련된 소규모 코드 정리 추가(#10698)
- 원격 설정 스크립트에서 권장되지 않는 워크플로우 로직을 제거하세요 (#10320) (감사합니다) @KirkMunro!)
- 도움말 형식을 적절한 대문자로 업데이트하세요 (#10678) (감사합니다) @tnieto88!)
- 지난 한 달간 커밋에서 들어온 CodeFactor 스타일 문제들을 정리합니다 (#10591) (감사합니다) @iSazonov!)
- PSTernaryOperator 실험 기능 설명 중 오타를 수정하세요 (#10586) (감사합니다) @bergmeister!)
- ActionPreference.를 열거 값을 비지원 예약 상태로 중단하고, 선호 변수 (#10317) 내 ActionPreference.Ignore 사용 제한을 제거하세요 (감사합니다) @KirkMunro!)
- ArrayList를 List<T> 로 대체하여 기능을 변경하지 않고 더 읽기 쉽고 신뢰할 수 있는 코드를 얻으세요 (#10333) (감사합니다) @iSazonov!)
- TestConnectionCommand (#10439) 코드 스타일 수정 (감사합니다) @vexx32!)
- Cleanup AutomationEngine을 사용하고 추가 SetSessionStateDrive 메서드 호출 (#10416) 제거하세요 (감사합니다) @iSazonov!)
- 기본 ParameterSetName을 다시 구분자로 바꾸어 ConvertTo-Csv 및 ConvertFrom-Csv (#10425)
Tools
- SDKToUse 속성에 기본 설정을 추가해서 VS(#11085)에 빌드되도록 하세요
- Install-Powershell.ps1: MSI 설치 (#10921) 매개변수 추가하세요 (감사합니다) @MJECloud!)
- install-powershell.ps1 (#10914) (감사합니다) (감사합니다) @kilasuit!)
- PowerShellHome 매개변수 (#10526)에서 빈 문자열을 처리하도록 Install-PowerShellRemoting.ps1 설정하세요 (감사합니다) @Orca88!)
- install-powershell.sh 에서 /etc/lsb-release에서 /etc/os-release로 전환하세요 (#10773) (감사합니다) @Himura2la!)
- 윈도우 데일리 버전(#10738)에서 pwsh.exe와 pwsh를 확인해 보세요 (감사합니다) @centreboard!)
- installpsh-osx.sh 에서 불필요한 탭을 제거하기 (#10752)
- 이미 설치된 일일 빌드 확인을 위한 업데이트 install-powershell.ps1 (#10489)
테스트
- 신뢰할 수 없는 DSC 테스트 대기 중(#11131)
- 해시테이블 키를 올바르게 검증하기 위한 Fix stringdata test (#10810)
- 테스트 모듈 언로드 (#11061) (감사합니다) @iSazonov!)
- 테스트 URL 재시도 간격 증가 (#11015)
- 테스트 동작을 정확히 설명할 수 있도록 테스트를 업데이트하세요. (#10928) (감사합니다 @romero126!)
- 임시 건너뛰기 TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
- 이벤트 핸들러가 누수 테스트 (#10790)을 안정적으로 만드세요
- CI YAML (#10767) (감사합니다) @RDIL!)
- 이벤트 핸들러 누수 수정 테스트 추가(#10768)
- 테스트 추가Get-ChildItem (#10507) (감사합니다) @iSazonov!)
- 정확도를 위한 매개변수에서 테스트의 모호한 언어를 교체하세요 (#10666) (감사합니다) @romero126!)
- ForEach-Object -Parallel 테스트에 실험 검사 추가하세요 (#10354) (감사합니다) @KirkMunro!)
- 알파인 검증 테스트 업데이트 (#10428)
빌드 및 패키지 개선
- 조정 패키지 빌드에서 Nuget 패키지 서명 수정 (#11316)
- PowerShell 갤러리와 NuGet (#11323)에서 의존성 업데이트
- Microsoft.ApplicationInsights 2.11.0에서 2.12.0 (#11305)로 넘어갑니다
- Microsoft.CodeAnalysis.CSharp를 3.3.1에서 3.4.0으로 상륙 (#11265)
- Debian 10 및 11 (#11236) 업데이트 패키지
- RC 이전의 실험적 기능만 활성화 (#11162)
- macOS 최소 버전 업데이트 (#11163)
- NJsonSchema 10.0.27에서 10.0.28로 상시 조정 (#11170)
- Preview.5 (#10854)를 위해 README.md 및 metadata.json 링크 업데이트
- PowerShell 소유의 컴플라이언스 테스트 파일을 선택하세요 (#10837)
- win7x86 msix 패키지가 빌드될 수 있도록 허용하세요. (내부 10515)
- 의미 버전을 NormalizeVersion 함수(#11087)에 전달할 수 있도록 허용합니다
- .NET 코어 프레임워크를 3.1-preview.3로 Bump (#11079)
- /src/Modules (#11078)에서 PSReadLine을 2.0.0-beta5에서 2.0.0-beta6으로 상향 조정
- Newtonsoft.Json을 12.0.2에서 12.0.3 (#11037) (#11038)로 상륙
- Debian 10, 11 및 CentOS 8 패키지 추가(#11028)
- ReleaseDate 필드Build-Info Json 파일을 업로드하세요 (#10986)
- .NET 코어 프레임워크를 3.1-preview.2로 Bump (#10993)
- x86 MSIX 패키지 빌드 활성화 (#10934)
- build.psm1 (#10927)에서 dotnet SDK 설치 스크립트 URL을 업데이트하세요
- 마크딕 부속. 0.17.1에서 0.18.0까지 서명됨 (#10887)
- Bump ThreadJob 2.0.1에서 2.0.2로 (#10886)
- MS 스토어 요구사항에 맞게 AppX 매니페스트 및 패키징 모듈을 업데이트하기 (#10878)
- Update package reference for PowerShell SDK to preview.5 (Internal 10295)
- 업데이트 ThirdPartyNotices.txt (#10834)
- Bump Microsoft.PowerShell.Native to 7.0.0-preview.3 (#10826)
- Microsoft.ApplicationInsights 2.10.0에서 2.11.0으로 넘어갑니다 (#10608)
- NJsonSchema 10.0.24에서 10.0.27로 상시 조정 (#10756)
- 빌드 시스템에 MacPorts 지원을 추가하세요 (#10736) (감사합니다) @Lucius-Q-User!)
- 1.4.4에서 1.4.5로 패키지 관리 부대 (#10728)
- NJsonSchema 10.0.23에서 10.0.24로 상시 조정 (#10635)
- MSI에서 클라이언트/서버 텔레메트리를 구분하기 위한 환경 변수 추가(#10612)
- PSDesiredStateConfiguration 2.0.3에서 2.0.4로 범프 조정 (#10603)
- Microsoft.CodeAnalysis.CSharp를 3.2.1에서 3.3.1로 상륙 (#10607)
- .Net Core 3.0 RTM (#10604) 업데이트 (감사합니다) @bergmeister!)
- MSIX 패키징을 Windows 스토어 요구사항에 맞게 업데이트하세요 (#10588)
- 버전 2.2에서 2.2.1로 올려 올려 보세요 (#10382)
- 패키지 관리 버전 1.4.3에서 1.4.4로 넘어갔다 (#10383)
- 7.0.0-preview.4 (내부 10011)에 대한 업데이트 README.md 및 metadata.json
- .Net Core 3.0 버전을 Preview 9에서 RC1 (#10552)로 업그레이드하세요 (감사합니다) @bergmeister!)
- ExperimentalFeature 리스트 생성 수정 (내부 9996)
- PSReadLine 버전 2.0.0-beta4에서 2.0.0-beta5로 상향 조정 (#10536)
- 릴리스 빌드 스크립트를 수정해서 릴리스 태그를 설정하세요
- Microsoft.PowerShell.Native 업데이트 버전 7.0.0-preview.2 (#10519)
- Netcoreapp3.0 preview9 (#10484) (감사합니다) @bergmeister!)
- 일일 코디네이드 빌드가 일일 빌드임을 확실히 인식하세요 (#10464)
- 통합 패키지 빌드를 업데이트하여 일일 빌드를 공개하세요 (#10449)
- appveyor reference(#10445) 삭제 (감사합니다) @RDIL!)
- NJsonSchema 버전을 10.0.22에서 10.0.23(#10421)으로 변경했습니다.
- Linux-x64 빌드 폴더 삭제를 제거하세요. Alpine 관련 의존성 때문에 필요하거든요 (#10407)
문서 및 도움말 콘텐츠
- 각 릴리스마다 로그 변경 로그를 하나로 리팩터링합니다 (#11165)
- PowerShell 7용 FWLinks 온라인 도움말 문서 (#11071)
- 업데이트 CONTRIBUTING.md (#11096) (감사합니다) @mklement0!)
- README.md (#11083)에 있는 설치 문서 링크 수정
- 스크립트 (#11024)에 예제 추가install-powershell.ps1 (감사합니다) @kilasuit!)
- CHANGELOG.md 에서 강조 및 Import-DscResource 수정 Select-String (#10890)
- powershell-beginners-guide.md 에서 오래된 링크를 제거하세요 (#10926)
- 안정 및 서비스 변경 로그 병합 (#10527)
- 빌드 문서에서 .NET 버전 사용(#10775) 업데이트 (감사합니다) @Greg-Smulko!)
- MSDN에서 Microsoft Learn으로 간 링크를 powershell-beginners-guide.md 에서 교체하세요 (#10778) (감사합니다) @iSazonov!)
- 고장 난 DSC 개요 수리 링크 (#10702)
- Stack Overflow를 또 다른 커뮤니티 리소스로 링크하기 위해 Support_Question.md 업데이트하세요 (#10638) (감사합니다) @mklement0!)
- 배포 요청 템플릿에 프로세서 아키텍처 추가(#10661)
- PowerShell 문서를 배우기 위해 새로운 PowerShell MoL 책을 추가하세요 (#10602)
- v6.1.6 및 v6.2.3 릴리스의 업데이트 README.md 및 메타데이터 (#10523)
- README.md (#10465) 오타 고쳐주세요 (감사합니다) @vedhasp!)
- 학습 자료 문서(#10369)에 PSKoans 모듈 참조를 추가하세요 (감사합니다) @vexx32!)
- 업데이트 README.md 및 metadata.json 7.0.0-preview.3 (#10393)