Powershell의 pspprovider란 무엇입니까?

Powershell의 pspprovider란 무엇입니까?

저는 PowerShell을 처음 사용하고 pspprovider의 개념을 이해하려고 노력하고 있습니다. 나는 내가 할 수 있다는 Get-PSProvider것을 안다사용 가능한 psprovider 목록 표시

내가 찾는 모든 도움은 내가 모르는 것을 알고 있다고 가정합니다. pspprovider에 대한 기본 설명을 찾고 있습니다.

답변1

이는 Get-PSProvider에 대한 도움말 파일에서 가져온 것입니다.

Among other things, Windows PowerShell providers determine which 
data stores you can navigate through.

여기에는 두 가지 주요 개념이 묻혀 있습니다. 첫 번째는 데이터 저장소 또는 원하는 경우 컨테이너의 개념입니다. 두 번째는 탐색의 개념입니다.

데이터 저장소의 개념은 데이터 작업의 기본입니다. 스크립팅이나 프로그래밍 작업을 해본 적이 있다면 변수에 익숙할 것입니다. 실제로 변수는 Get-PSProvider에 나열된 데이터 저장소 종류 중 하나입니다. 데이터베이스나 웹사이트 관련 작업을 해본 적이 있다면 다른 종류의 데이터 저장소에 익숙할 것입니다. 두 번째 종류의 탐색 가능한 데이터 저장소는 파일 시스템입니다. Windows 작업을 해본 적이 있다면 폴더와 파일은 물론 폴더와 하위 폴더 탐색에도 익숙할 것입니다. Powershell에서는 폴더를 디렉터리라고 부르지만 개념은 동일합니다.

레지스트리는 다른 종류의 데이터 저장소입니다.

저와 아마도 여러분에게 새로운 점은 이러한 다양한 종류의 데이터 저장소를 모두 일반 슈퍼클래스로 일반화한 다음 전체 슈퍼클래스에 대해 특정 작업을 정의한다는 아이디어입니다.

예를 들어 Get-ChildItem은 계층 구조로 배열된 컨테이너 트리를 탐색할 수 있는 기본 탐색 작업입니다. 그러나 파일용 특수 GCI, 레지스트리 항목용 GCI, 변수용 GCI 등을 구현하는 대신 이들 세 가지 및 기타 여러 가지 중 하나와 함께 사용하도록 조정할 수 있는 단일 GCI를 구현하기로 결정했습니다.

이것은 단지 개념의 시작일 뿐이지만 도움이 되기를 바랍니다.

답변2

PSProvider는 기본적으로 데이터 저장소입니다. 일반 데이터 시스템 폴더처럼 처리할 수 있습니다. get-psproviders모든 psprovider 목록이 표시됩니다.

예: cmd.exe현재 위치를 레지스트리로 변경할 수 없습니다. cmd를 사용하여 레지스트리 설정을 변경할 수 있지만 디렉터리나 cd레지스트리처럼 처리할 수는 없습니다.

PowerShell에서 레지스트리는 PSProvider입니다. 이는 데이터 시스템 폴더처럼 액세스할 수 있음을 의미합니다. 입력하면 cd hklm:실제로 로컬 머신 레지스트리 내에 있으며 다음을 사용하여 해당 내용에 액세스할 수 있습니다.Get-ChildItem

이는 실제로 레지스트리를 가리키는 PSDrive 등을 제공할 수 있다는 이점이 있습니다.

New-PSDrive -name G -PSProvider Registry -Root HKCU:\Software

이제 G:\ 드라이브가 현재 사용자 > 소프트웨어 레지스트리에 매핑되었습니다. (현재 PSSession에만 해당)

PSProvider를 사용하여 수행할 수 있는 기능은 많습니다. get-help about_providers자세한 내용을 보려면 실행하고 읽어야 합니다 .

관련 정보