PowerShell Core 6.2의 새로운 기능
PowerShell Core 6.2 릴리스에서는 성능 향상, 버그 수정 및 품질을 개선하는 더 작은 cmdlet 및 언어 향상에 초점을 맞추었습니다. 전체 향상된 기능 목록을 보려면 GitHub의 자세한 changelog를 확인하세요.
실험적 기능
이전에 실험적 기능에 대한 지원을 사용하도록 설정했습니다. 6\.2 릴리스에는 사용해 볼 수 있는 네 가지 실험적 기능이 있습니다. 기능을 향상하고 기능이 주류 상태로 홍보할 가치가 있는지 결정할 수 있도록 피드백을 제공해 주세요.
Get-ExperimentalFeature
를 사용하여 사용 가능한 실험적 기능 목록을 확인합니다. Enable-ExperimentalFeature
및 Disable-ExperimentalFeature
를 사용하여 이 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다.
명령을 찾을 수 없음 제안
이 기능은 유사 일치를 사용하여 잘못 입력했을 수 있는 명령이나 cmdlet에 대한 제안을 찾습니다.
Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion
예
이 예제에서는 철자가 틀린 cmdlet 이름이 가능성이 가장 높은 제안부터 가장 낮은 제안까지 여러 제안에 유사 일치됩니다.
Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.
암시적 원격 일괄 처리
파이프라인에서 암시적 원격을 사용하면 PowerShell에서는 파이프라인의 각 명령을 독립적으로 처리합니다. 개체는 파이프라인 실행을 통해 클라이언트와 원격 시스템 사이에서 반복해서 직렬화 및 de-serialized
됩니다.
이 기능을 통해 PowerShell에서는 파이프라인을 분석하여 명령이 실행하기에 안전하고 대상 시스템에 있는지 확인합니다. 이에 해당하는 경우 PowerShell에서는 전체 파이프라인을 원격으로 실행하고 결과를 다시 클라이언트로만 직렬화 및 de-serializes
합니다.
Enable-ExperimentalFeature -Name PSImplicitRemotingBatching
localhost를 통한 Get-Process | Sort-Object
의 실제 테스트는 10~15초부터 20~30밀리초까지 감소합니다. 이 기능은 클라이언트에서만 사용하도록 설명하면 됩니다. 서버에서 변경할 필요가 없습니다.
임시 드라이브
Enable-ExperimentalFeature -Name PSTempDrive
다른 운영 체제에서 PowerShell Core를 사용하는 경우 임시 디렉터리를 찾는 환경 변수가 Windows, macOS 및 Linux에서 서로 다른지 살펴보겠습니다. 이 기능을 통해 사용 중인 운영 체제의 임시 디렉터리에 자동으로 매핑되는 Temp:
라는 PSDrive를 가져옵니다.
예
PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!
기본 파일 명령(예: Linux의 ls
)은 PSDrive를 인식하지만 이 Temp:
드라이브를 인식하지 않습니다.
약어 확장
PowerShell cmdlet에는 설명이 포함된 명사가 있어야 합니다. 이로 인해 입력하기 어려운 긴 이름이 생성됩니다. 이 기능을 사용하면 cmdlet의 대문자만 입력하고 탭 완성을 사용하여 일치 항목을 찾을 수 있습니다.
Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion
예
PS> i-arsavsf
Azure PowerShell Az 모듈이 설치되어 있고 Tab 키를 누르면 다음으로 자동 완성됩니다.
PS> Import-AzRecoveryServicesAsrVaultSettingsFile
참고
이 기능은 대화형으로 사용할 수 있습니다. cmdlet의 약어 형식은 실행할 수 없습니다. 이 기능은 별칭을 대체하지 않습니다.
주요 변경 내용
- Windows PowerShell과 일치하도록
Write-Output
의-NoEnumerate
동작 수정 (#9069) - 결과를 결과와
1,2,3 | Join-String
동일하게 만들기Join-String -InputObject 1,2,3
(#8611)(감사합니다.@sethvs!) Sort-Object
추가-Stable
및 관련 테스트(#7862)(감사합니다.@KirkMunro!)- 소수 자릿수 초를 허용하도록 cmdlet 개선
Start-Sleep
(#8537) (감사합니다. @Prototyyppi!) - 모든 문화권에서 OrdinalIgnoreCase를
case-insensitive
로 사용하도록 해시 테이블 변경(#8566) - 출력에
Import-Csv
바인딩하기 위해Get-ChildItem
LiteralPath 수정(#8277)(감사합니다.@iSazonov!) - (#7899)에서
Import-Csv
큰따옴표 구분 기호를 사용하는 경우 이름 없는 열을 더 이상 건너뛰지 않습니다(감사합니다.) @Topping!) Get-ExperimentalFeature
에 더 이상-ListAvailable
스위치가 없음(#8318)- 이제 디버그 매개 변수가 Inquire(#8195) 대신 계속으로 설정
$DebugPreference
됨(감사합니다).@KirkMunro!) - pwsh와 함께 사용되는 리디렉션되고 인코딩되는 비대화형 명령에서 지정된 경우
-OutputFormat
사용(#8115) - GAC에서 로드하기 전에 모듈 기본 경로에서 어셈블리 로드(#8073)
- Linux 미리 보기 패키지에서 물결표 제거(#8244)
- 프로필 처리 앞으로
-WorkingDirectory
처리 이동(#8079) - Unix에 환경 변수를 추가
PATHEXT
하지 마세요(#7697)(감사합니다.) @iSazonov!)
알려진 문제
- Windows IOT ARM 플랫폼의 원격 처리에는 모듈 로드 문제가 있습니다. (#8053) 참조
일반 업데이트 및 수정
- 대/소문자를 구분하는 파일 시스템에서 파일 및 폴더의 대/소문자를 구분하지 않는 탭 완성 사용(#8128)
- PSVersionInfo.PSVersion 및 PSVersionInfo.PSEdition을 공용으로 만들기(#8054)(감사합니다. @KirkMunro!)
- 블록에
catch{ }
대한$_
/$PSItem
형식 유추 추가(#8020)(감사합니다.@vexx32!) - 정적 메서드 호출 형식 유추 수정(#8018) (감사합니다. @SeeminglyScience!)
- ,
Group-Object
PSObject 및 Hashtable에 대해Select-Object
유추된 형식 만들기(#7231)(감사합니다.@powercode!) ByRef-like
형식 매개 변수가 포함된 호출 메서드 지원(#7721)- Windows PowerShell 모듈 경로가 이미 환경의 PSModulePath에 있는 경우 처리(#7727)
- 일반 텍스트를 저장하여 Windows가 아닌 환경에서도
SecureString
cmdlet을 사용하도록 설정(#9199) - securestring을 사용하여 clixml을 가져올 때 Windows가 아닌 환경에서 오류 메시지 개선(#7997)
- ReplyTo 매개 변수 추가
Send-MailMessage
(#8727)(감사합니다. @replicaJunction!) Send-MailMessage
에 사용되지 않음 메시지 추가(#9178)- WinRM이 없을 때
localhost
에서Restart-Computer
가 작동하도록 수정(#9160) - PowerShell이 호스트될 때
Start-Job
이 종료 오류를 throw하도록 설정(#9128) - ushort, uint, ulong 및 short 리터럴용 C# 스타일 형식 가속기 및 접미사 추가(#7813) (감사합니다. @vexx32!)
- 숫자 리터럴에 대한 새 접미사 추가 - about_Numeric_Literals (#7901) 참조(감사합니다. @vexx32!)
- SupportsShouldProcess가 'true'(#8209)로 설정되지 않은 경우 영향 수준을 올바르게 보고합니다(감사합니다.) @vexx32!)
- 웹 Cmdlet에서 요청 문자 집합 문제 해결(#8742)(감사합니다. @markekraus!)
- Web Cmdlet에 대한 예상
100-continue
문제 해결(#8679)(감사합니다. @markekraus!) - 웹 cmdlet의 파일 차단 문제 해결(#7676)(감사합니다. @Claustn!)
- (#8694)에서
Invoke-RestMethod
코드 페이지 구문 분석 문제 해결(감사) @markekraus!) ConvertTo-Json
을 리팩터링하여 JsonObject.ConvertToJson을 공용 API로 공개(#8682)- -Depth(#8199)를 사용하여 구성 가능한 최대 깊이
ConvertFrom-Json
추가(감사) @louistio!) - cmdlet에서
ConvertTo-Json
EscapeHandling 매개 변수 추가(#7775)(감사합니다. @iSazonov!) - pwsh 및
Enter-PSHostProcess
에-CustomPipeName
추가(#8889) New-Item
사용하여 Windows에서 상대 바로 가기 링크를 만들 수 있음(#8783)- Windows 사용자가 개발자 모드에서 관리자 권한이 없어도 바로 가기 링크를 만들도록 허용(#8534)
Write-Information
에서$null
을 사용할 수 있음(#8774)- MAML 도움말 콘텐츠를 사용하여 고급 함수의
Get-Help
수정(#8353) - 매개 변수가 하나만 선언되면 -Parameter에서 PSTypeName 문제 해결
Get-Help
(#8754)(감사합니다. @pougetat!) - 주석 도움말을 위해 ScriptBlock에서 실행되는
Get-Help
의 토큰 계산 수정 (#8238) (감사합니다. @hubuk!) - 문자열 배열을 허용하도록 cmdlet -Parameter 매개 변수 변경
Get-Help
(#8454)(감사합니다. @sethvs!) - 경로에 공백이 포함되어 있으면 PAGER 확인(#8571)(감사합니다.) @pougetat!)
- 'help' 함수에서
less
를 사용하여 종료 방법을 사용자에게 지시하도록 메시지 추가(#7998) - cmdlet에
Format-Hex
지원 열거형 및 문자 형식 추가(#8191)(감사합니다. @iSazonov!) Format-Hex
에서 ShouldProcess 제거(#8178)- cmdlet에 새 Offset 및 Count 매개 변수 추가
Format-Hex
및 리팩터링(#7877)(감사합니다. @iSazonov!) - 'label'에 대한 별칭 키로 'name'
ConvertTo-Html
을 허용합니다. 'width' 항목이 정수(#8426)가 되도록 허용합니다(감사합니다.) @mklement0!) - scriptblock 기반 계산 속성이 다시
ConvertTo-Html
작동하도록(#8427) (감사합니다. @mklement0!) - 파이프라인 입력에서 텍스트를 만들기 위한 cmdlet
Join-String
추가(#7660)(감사합니다. @powercode!) - cmdlet FormatString 매개 변수 논리 수정
Join-String
(#8449) (감사합니다. @sethvs!) - 원격에서 작동하도록
Clear-Host
를 다시 using$RAWUI
및 clear로 변경(#8609) Clear-Host
를 간단하게 호출되는[console]::clear
로 변경하고 Unix에서 clear 별칭 제거(#8603)- 출력에
Import-Csv
바인딩Get-ChildItem
하도록 LiteralPath 수정(#8277) (감사합니다. @iSazonov!) - help 함수에서 AliasHelpInfo에 파서를 사용하면 안 됨(#8552)
- 대본 헤더를 최소화하기 위해
Start-Transcript
추가-UseMinimalHeader
(#8402) (감사합니다.@lukexjeremy!) Enable-ExperimentalFeature
및Disable-ExperimentalFeature
cmdlet 추가(#8318)- logman.exe를 사용할 수 있는 경우 PSDiagnostics에서 모든 cmdlet 공개(#8366)
- 플랫폼에서
non-Windows
Persist 매개 변수New-PSDrive
제거(#8291) (감사합니다.@lukexjeremy!) - (#7206)에 대한
cd +
지원 추가(감사) @bergmeister!) - - 및 +라는 폴더에서
Set-Location -LiteralPath
를 작동할 수 있음(#8089) Test-Path
빈 값 또는$null
경로 값(#8080)이 지정되면 반환됩니다$false
(감사합니다.)@vexx32!)- 경로가 공급자와 일치하지 않는 경우에도 동적 매개 변수를 반환할 수 있음(#7957)
- Unix 플랫폼에서
Get-PSHostProcessInfo
및Enter-PSHostProcess
지원(#8232) - cmdlet에서
Get-Content
할당 감소(#8103) (감사합니다. @iSazonov!) Add-Content
가 콘텐츠를 작성하는 동안 다른 도구와 읽기 권한을 공유할 수 있음(#8091)Get/Add-Content
컨테이너를 대상으로 할 때 향상된 오류를 throw합니다(#7823)(감사합니다.) @kvprasoon!)-ListAvailable
-NoUserOverrides
cmdlet에Get-Culture
매개 변수 추가-Name
(#7702)(감사합니다.@iSazonov!)- Encoding 매개 변수 완성을 위한 통합 특성 추가 (#7732) (감사합니다. @ThreeFive-O!)
- 인코딩 매개 변수에서 등록된 코드 페이지의 숫자 ID 및 이름 허용(#7636)(감사합니다.@iSazonov!)
- 와일드카드 문자로 수정
Rename-Item -Path
(#7398) (감사합니다. @kwkam!) - 사용
Start-Transcript
및 파일이 있는 경우 삭제하지 않고 빈 파일(#8131)(감사합니다.) @paalbra!) - FileAccess.Read 및 FileShare.Read를 사용하여 오픈 소스 파일 만들기
Add-Type
(#7915) (감사합니다.@IISResetMe!) - 최신 Windows의
Enter-PSSession -ContainerId
수정(#7883) - NestedModules 속성이
Test-ModuleManifest
에 의해 채워지도록 함(#7859) - -UFormat에
Get-Date
사례 추가%F
(#7630)(감사합니다.@britishben!) - 종속성이 있는 서비스를 중지하는 수정
Set-Service -Status Stopped
(#5525) (감사합니다. @zhenggu!)