Как преобразовать метод класса PowerShell в ScriptBlock - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь преобразовать метод класса PowerShell в блок скриптов.

Без использования классов я могу сделать это:

function foo() { 'bar' }
${function:foo} # this will display: 'bar'

Однако эквивалент не работает при использованииклассы.Например, следующее не работает:

class FooBar {
  foo() { 'bar' }
}

$foobar = new-object FooBar

${function:$foobar.foo} # doesn't work

Я не удивлен, что вышеупомянутое не работает, поскольку методы класса фактически реализованы как блоки скриптов, а не функции, но я не могу получить доступбазовый код, который реализует метод.Эти попытки также не работают:

${scriptblock:$foobar.foo}
${scriptblock:FooBar.foo}

Есть идеи?

1 Ответ

0 голосов
/ 02 июня 2018

Ваш метод - [void], поверните к [string], затем преобразуйте вызов в скрипт-блок:

class FooBar {
  [string]foo() { return 'bar' }
}

$foobar = new-object FooBar

$scriptBlock = [Scriptblock]::Create('$foobar.foo()') 

$(.$scriptBlock)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...