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