#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
.