Вопрос

Я играю вокруг с динамическими способностями PowerShell, и мне было интересно что-то

В PowerShell есть что-то в Powershell, аналогично методу Ruby_Missing (), где вы можете настроить «Catch All Method», чтобы динамически обрабатывать вызовы несуществующих методов на ваших объектах?

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

Решение

Нет, не совсем. Я подозреваю, что следующая версия PowerShell станет более в соответствии с возможностями динамических диспетчеров, добавленных в .NET 4, но в настоящее время это было бы невозможно в чистом PowerShell.

Хотя я вспоминаю, что есть модель компонентов, аналогичной найденную в типичном процессу .NET для создания объектов, которые дают свойства и методы динамически для PowerShell. Вот как элементы XML могут рассматриваться как объекты, например. Но это плохо задокументировано, если вообще и в моем опыте много типов / методов, необходимых для интеграции, помечены как внутренние.

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

Вы можете эмулировать это, но это сложно. Техника описана в книге Ли Холмса и сводится к двум сценариям - Add-RelaticathenPathCapture http://poshcode.org/2131. и new-commandwrapper http://poshcode.org/2197..

Суть - это - вы можете переопределить любой командлет через New-commandwrapper. Таким образом, вы можете переопределить по умолчанию, который неявно вызывается в конце почти каждой команды (исключая команды с явными форматцами, такими как формат-таблица в конце). В новом выезде вы проверяете, бросил ли последнюю команду исключения, что не найдет метод / свойство. И там вы вставляете свой метод_миссирующей логики.

Вы можете использовать попробовать поймать в PowerShell 2.0

http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/11/Hey-scripting-guy-march-11-2010.aspx.

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