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

3058
James Jenkins

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

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

3

2 ответа на вопрос

4
Walter Mitty

Это из файла справки для Get-PSProvider:

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

Здесь похоронены две основные концепции. Первый - это концепция хранилища данных или, если хотите, контейнера. Второе - это концепция навигации.

Концепция хранилища данных является основной для работы с данными. Если вы уже работали со скриптами или программированием, вы знакомы с переменными. Фактически, переменные являются одним из видов хранилищ данных, перечисленных Get-PSProvider. Если вы уже работали с базами данных или веб-сайтами, вы знакомы с другими видами хранилищ данных. Второй тип хранилищ данных, доступных для навигации, - это файловая система. Если вы уже работали с Windows, вы знакомы с папками и файлами, и даже с навигацией по папкам и подпапкам. Папки в Powershell называются каталогами, но это та же концепция.

Реестр - это другой тип хранилища данных.

Новым для меня и, возможно, для вас является идея обобщения всех этих различных типов хранилищ данных в общий суперкласс, а затем определение определенных операций для всего суперкласса.

Например, Get-ChildItem - это базовая операция навигации, которая позволяет вам обходить дерево контейнеров, расположенных в иерархии. Но вместо реализации специализированного GCI для файлов, другого для записей реестра, другого для переменных и т. Д. Они решили реализовать один GCI, который можно адаптировать для использования с любым из этих трех и несколькими другими.

Это только начало концепции, но я надеюсь, что это поможет.

3
SimonS

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для получения дополнительной информации.