Powershell — возвращает пользовательский объект на хост C #

#vb.net #powershell

#vb.net #powershell

Вопрос:

У меня есть следующий скрипт powershell, который загружает пользовательскую .NET DLL, он содержит класс ScriptResult, он выполняется из VB.NET приложение.

 Add-Type -Path $myLibPath

$result = New-Object TheLibrary.ScriptResult
  

В VB.NET приложение Я хочу получить результирующий объект, но, похоже, следующее не работает

 'get the script result
Dim result As ScriptResult = run.SessionStateProxy.GetVariable("result")
  

Что я делаю неправильно?

Ответ №1:

a) сначала определите переменную для среды выполнения с помощью

run.SessionStateProxy.SetVariable("result", null)

б) возможно, могло бы помочь пометить $result как глобальный (не проверено):

$global:result = New-Object TheLibrary.ScriptResult

Комментарии:

1. После мучительных поисков я смог добиться успеха с вашим вторым вариантом. Большое спасибо.

Ответ №2:

GetVariable возвращает PSVariable экземпляр. Значение переменной находится в .Value свойстве. Вероятно, вам потребуется привести его ( DirectCast ) к вашему ScriptResult типу, поскольку Value возвращает Object .