Разработка PSProvider: Get-ChildItem вызывает GetItem
У меня есть класс, который расширяетсяContainerCmdletProvider
, в котором я переопределил следующие методы:NewDrive
,IsValidPath
, , , и .
Я могу создать новый диск (New-PSDrive -Name test ...
), и успешно дочерние элементы из корня (). Но когда я пробую это на подпути, которая, как я знаю, существует и имеет детей (), я получаю тот же результат, как если бы я запустилGet-Item test:path
.
Используя отладчик и устанавливая точки останова, я могу видеть, какие методы вызываются.
ДляGet-ChildItem test:
его, , .
ДляGet-ChildItem test:path
его,ItemExists
, .
Это ожидаемое поведение? Если да, то как я могу узнать намерение пользователя (просмотр элемента или его дочерних элементов)?
я удивленHasChildItems
не называется.
Чтобы вывестиtest:path
предмет, из обоихGetChildItems
иGetItem
, Я используюWriteItemObject(item, itemPath, true)
прохождениеisContainer
пометить какtrue
.
Я следую руководству «Как создать поставщика Windows PowerShell» от Microsoft. Я ориентируюсь на PowerShell Core (у меня версия 7.3.7), но это единственное руководство, которое я нашел.