Что такое psprovider в powershell?

Что такое psprovider в powershell?

Я новичок в PowerShell и пытаюсь понять концепцию psprovider. Я знаю, что могу использовать Get-PSProviderдляпоказать список доступных psproviders

Вся помощь, которую я нахожу, предполагает, что я знаю то, чего не знаю. Ищу базовое объяснение psprovider.

решение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, который можно было бы адаптировать для использования с любым из этих трех и несколькими другими.

Это только начало концепции, но я надеюсь, что она будет вам полезна.

решение2

PSProviders — это, по сути, хранилища данных. Вы можете работать с ними как с обычной папкой системы данных. get-psprovidersВы получите список всех psproviders.

пример: cmd.exeне удалось изменить текущее местоположение в реестре. у вас была возможность изменить параметры реестра с помощью cmd, но вы не могли обращаться с ним как с каталогом или cdреестром.

В PowerShell Реестр — это PSProvider. Это означает, что вы можете получить к нему доступ как к папке системы данных. Если вы введете , cd hklm:вы фактически окажетесь внутри реестра локальной машины и сможете получить доступ к его содержимому с помощьюGet-ChildItem

Это имеет то преимущество, что вы можете предоставить, например, PSDrives, которые фактически указывают на реестр.

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

Диск G:\ теперь сопоставлен с Текущим пользователем > Реестром программного обеспечения. (только для текущего сеанса PSSession)

С помощью PSProviders можно реализовать множество функций. get-help about_providersДля получения дополнительной информации выполните и прочтите.

Связанный контент