PowerShell Core 6.2의 새로운 기능

PowerShell Core 6.2 릴리스에서는 성능 향상, 버그 수정 및 품질을 개선하는 더 작은 cmdlet 및 언어 향상에 초점을 맞추었습니다. 전체 향상된 기능 목록을 보려면 GitHub의 자세한 changelog를 확인하세요.

실험적 기능

이전에 실험적 기능에 대한 지원을 사용하도록 설정했습니다. 6\.2 릴리스에는 사용해 볼 수 있는 네 가지 실험적 기능이 있습니다. 기능을 향상하고 기능이 주류 상태로 홍보할 가치가 있는지 결정할 수 있도록 피드백을 제공해 주세요.

Get-ExperimentalFeature를 사용하여 사용 가능한 실험적 기능 목록을 확인합니다. Enable-ExperimentalFeatureDisable-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-ChildItemLiteralPath 수정(#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-ObjectPSObjectHashtable에 대해 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-ExperimentalFeatureDisable-ExperimentalFeature cmdlet 추가(#8318)
  • logman.exe를 사용할 수 있는 경우 PSDiagnostics에서 모든 cmdlet 공개(#8366)
  • 플랫폼에서 non-WindowsPersist 매개 변수 New-PSDrive 제거(#8291) (감사합니다.@lukexjeremy!)
  • (#7206)에 대한 cd + 지원 추가(감사) @bergmeister!)
  • - 및 +라는 폴더에서 Set-Location -LiteralPath를 작동할 수 있음(#8089)
  • Test-Path빈 값 또는 $null 경로 값(#8080)이 지정되면 반환됩니다$false(감사합니다.)@vexx32!)
  • 경로가 공급자와 일치하지 않는 경우에도 동적 매개 변수를 반환할 수 있음(#7957)
  • Unix 플랫폼에서 Get-PSHostProcessInfoEnter-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.ReadFileShare.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!)