Я не знаю, как исправить тип с помощью метода расширения. Но, безусловно, возможно исправить объект с помощью командлета 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, но он действительно время от времени предлагает загадочный синтаксис.
- "- in": это сокращение от inputObject и по сути говорит добавление члена к этому
- "- memberType": существует множество различных типов значений, которые можно добавить к объекту времени выполнения, включая методы, свойства заметки, метод кода и т. Д. Полный список см. В «get-help add-member -full»
- "- passthru": возьмите объект, к которому добавлен элемент, и протолкните его вниз по конвейеру. Без этого флага присваивание будет присваивать и пустой конвейер для
$a
.
- Вызов присваивания в основном гарантирует, что
$a
теперь имеет метод, который вы добавили