3

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

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

2 ответа2

4

Это из файла справки для 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .