Вопрос

Можно ли написать метод расширения в PowerShell?или прикрепить новый метод поверх существующего типа, например [string], в реальном времени во время выполнения?

Это было полезно?

Решение

Я не знаю, как исправить тип с помощью метода расширения.Но, безусловно, можно исправить объект с помощью командлета add-member.

PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar

РЕДАКТИРОВАТЬ Объясните полностью и полностью читаемый синтаксис PowerShell :)

Мне нравится PowerShell, но время от времени он действительно сталкивается с загадочным синтаксисом.

  • "-в":Это сокращение от inputObject и, по сути, говорит о добавлении участника к этому
  • "-memberType":Существует множество различных типов значений, которые вы можете добавить к объекту среды выполнения, включая методы, свойства примечаний, метод кода и т. д.Полный список см. в разделе «get-help add-member -full».
  • "-пройти через":Возьмите объект, к которому только что был добавлен член, и пропустите его по конвейеру.Без этого флага назначение было бы назначением и пустым конвейером. $a.
  • Вызов присваивания в основном гарантирует, что $a теперь есть метод, который вы добавили

Другие советы

Если у вас есть метод или свойство, которое вы хотите добавить к определенному типу, вы можете создать собственное расширение типа с помощью адаптивной системы типов PowerShell.

Расширение пользовательского типа - это файл XML, который описывает свойство или метод сценария для типа, а затем загружает его в сеанс PowerShell с помощью командлета Update-TypeData.

Отличный пример этого можно найти на Блог команды PowerShell - Ненависть к члену? (Адаптивная система типов PowerShell для спасения)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top