TypeConversion с классами PowerShell имеет некоторые неочевидные проблемы.
Мой первый подход с атрибутом TypeConverter-Attribute не выполняется ни с NullRefException, ни с UnknownTypeException (это зависит от порядка классов в вашем * .ps1) .
Я копался в Types.ps1 xml и создал следующее xml:
<Types>
<Type>
<Name>AcmeState</Name>
<TypeConverter>
<TypeName>StringToAcmeStateConverter</TypeName>
</TypeConverter>
</Type>
</Types>
и добавил TypesToProcess
к .psd1, указывающему на вышеупомянутый ps1 xml.
Это не удастся, заявив, что конвертер неизвестен, что, вероятно, означает, что PowerShell будет обрабатывать этот файл либо в другом контексте как модуль, либо до загрузки модуля.
Чтобы устранить эту проблему Я удалил TypesToProcess
из .psd1 и добавил Update-TypeData Types.ps1xml
в качестве последней строки в мой модуль, таким образом, он будет запускаться автоматически при импорте модуля - и вуаля! Это работает.
TLDR : Если вы хотите зарегистрировать TypeConverter, определенный в классе PowerShell, вам нужно использовать Update-TypeData