PowerShell은 입력에 대한 완성을 제공하여 힌트를 제공하고, 탐색을 용이하게 하며, 입력 속도를 향상합니다. 명령 이름, 매개 변수 이름, 인수 값 및 파일 경로는 모두 Tab 키를 눌러 완료할 수 있습니다.
Tab 키는 Windows의 기본 키 바인딩입니다.
또한 PSReadLine 은 MenuComplete
Ctrl+Space에 바인딩된 함수를 제공합니다. 함수는 MenuComplete
명령줄 아래에 일치하는 완료 목록을 표시합니다.
이러한 키 바인딩은 PSReadLine cmdlet 또는 PowerShell을 호스팅하는 애플리케이션을 사용하여 변경할 수 있습니다. 비 Windows 플랫폼에서는 키 바인딩이 다를 수 있습니다. 자세한 내용은 about_PSReadLine_Functions 참조하세요.
기본 제공 탭 완성 기능
PowerShell은 명령줄 환경의 여러 측면에 대해 탭 완성을 사용하도록 설정했습니다.
파일 이름 완성
사용 가능한 선택 항목에서 파일 이름 또는 경로를 자동으로 입력하려면 이름의 일부를 입력하고 Tab 키를 누릅니다. PowerShell은 자동으로 이름을 찾은 첫 번째 일치 항목으로 확장합니다. Tab 키를 다시 누르면 사용 가능한 모든 선택 항목을 순차적으로 탐색할 수 있습니다.
명령 및 매개 변수 이름 완성
cmdlet 이름의 탭 확장은 약간 다릅니다. cmdlet 이름에 탭 확장을 사용하려면 이름(동사)의 첫 번째 부분 전체와 그 뒤에 있는 하이픈을 입력합니다. 이름의 일부를 입력하여 부분 일치를 할 수 있습니다. 예를 들어 get-co
을 입력하고 Tab 키를 누르면 PowerShell이 자동으로 이 명령을 Get-Command
cmdlet로 확장하며, 문자의 대소문자가 표준 양식으로 변경됩니다.
Tab 키를 다시 누르면 PowerShell이 현재와 다른 유일하게 일치하는 cmdlet 이름인 Get-Content
로 바꿉니다. 탭 완성은 PowerShell 별칭 및 네이티브 실행 파일을 확인하는 데에도 작동합니다.
다음 그래픽에서는 탭 및 메뉴 완성의 예를 보여 줍니다.
기타 탭 완성 기능
PowerShell의 각 새 버전에는 버그를 수정하고 유용성을 향상시키는 탭 완성 기능이 향상되었습니다.
PowerShell 7.0
- 탭 완료 기능은 열거형이거나 형식 제한을 가진 변수 할당을 해결합니다.
- 탭 완성 기능은 축약된 cmdlet과 함수 이름을 확장합니다. 예를 들어
i-psdf<tab>
은(는)Import-PowerShellDataFile
을(를) 반환합니다.
PowerShell 7.2
- 비지역화된
about*
주제에 대한 탭 완성 기능 수정 - 완료 시 위치 매개 변수로 처리되는 스플래팅 수정
- 주석 기반 도움말 키워드에 대한 완성 추가
-
#Requires
문장에 완성 추가 - cmdlet의 View 매개 변수에
Format-*
대한 탭 완성 추가 - 클래스 기반 인수 완료자에 대한 지원 추가
PowerShell 7.3
- 지정된 스크립트 블록 내에서
ValidateScriptAttribute
에 대한 탭 완성을 수정합니다. -
break
및continue
이후 루프 레이블에 대한 탭 완성이 추가되었습니다. - 여러 시나리오에서 해시 테이블 완성도 개선
- 매개변수 분산
-
Arguments 매개 변수에 대한
Invoke-CimMethod
-
FilterHashtable에 대한
Get-WinEvent
매개 변수 - CIM cmdlet에 대한 Property 매개 변수
- 멤버 완료 시나리오에서 중복 항목 제거
- 네트워크 공유(UNC 경로) 완성 시 슬래시 지원
- 멤버 자동 완성 개선
- 매개 변수에 대해 열거형보다 자동 완성의 우선 순위를 지정하세요
ValidateSet
- 형식 매개 변수를 사용하여 제네릭 메서드에 대한 형식 유추 지원 추가
- 형식 유추 및 완료 개선
-
ForEach-Object -MemberName
에 대한 완료 결과에 메서드가 표시되도록 허용 -
void를 반환하는 식(예: (
[void]("")
)에서 완료를 방지합니다. - 클래스 완성이 AST를 기반으로 하는 경우 기본이 아닌 클래스 생성자가 표시되도록 허용
-
명령 매개 변수의 탭 완성을 향상시키는 다른 방법
기본 제공 탭 확장은 내부 함수 TabExpansion 또는 TabExpansion2에 의해 제어됩니다. 이러한 함수의 기본 동작을 대체하는 함수 또는 모듈을 만들 수 있습니다. TabExpansion 키워드를 검색하여 PowerShell 갤러리에서 예제를 찾을 수 있습니다.
매개 변수와 함께 ValidateSet
또는 ArgumentCompletions
특성을 사용하기
이 ArgumentCompletions
특성을 사용하면 탭 완성 값을 특정 매개 변수에 추가할 수 있습니다.
ArgumentCompletions
특성은 ValidateSet
와 비슷합니다. 두 특성 모두 사용자가 매개 변수 이름 뒤의 Tab 키를 누를 때 표시할 값 목록을 사용합니다. 하지만 ValidateSet
와 달리, 값들은 유효성이 검사되지 않습니다.
자세한 내용은 다음을 참조하세요.
ArgumentCompleter
특성 사용 또는 Register-ArgumentCompleter
매개 변수 사용
인수 완성기는 매개 변수 값에 대한 동적 탭 완성을 제공하는 스크립트 블록 또는 함수입니다.
이 ArgumentCompleter
특성을 사용하면 매개 변수에 대한 탭 완성 값을 제공하는 함수를 등록할 수 있습니다.
ArgumentCompleter
특성을 갖는 매개 변수를 포함하는 함수에서 인수 완성자 함수가 사용 가능해야 합니다. 일반적으로 함수는 동일한 스크립트 또는 모듈에 정의됩니다.
자세한 내용은 ArgumentCompleter를 참조하세요.
cmdlet은 Register-ArgumentCompleter
지정한 명령에 대해 런타임에 스크립트 블록을 인수 완료자 함수로 등록합니다. 이렇게 하면 스크립트 또는 모듈 외부 또는 네이티브 명령에 대한 인수 완성자를 정의할 수 있습니다. 자세한 내용은 register-ArgumentCompleter 참조하세요.
PSReadLine의 인텔리센스 예측 기능
PSReadLine 2.1.0에는 예측 IntelliSense 기능이 도입되었습니다. 예측 IntelliSense는 PSReadLine 기록의 항목을 기반으로 전체 명령에 대한 제안을 제공합니다.
PSReadLine 2.2.2는 고급 논리를 사용하여 전체 명령에 대한 제안을 제공하는 플러그 인 모듈에 대한 지원을 추가하여 예측 IntelliSense의 기능을 확장합니다. Az.Tools.Predictor 모듈은 예측 IntelliSense의 첫 번째 플러그 인이었습니다. Machine Learning을 사용하여 실행할 Azure PowerShell 명령과 사용하려는 매개 변수를 예측합니다.
자세한 내용은 예측 변수 사용을 참조하세요.
PowerShell