Я не могу передать справочный параметр в PowerShell из C#. Я получаю следующую ошибку:
"System.Management.Automation.ParentContainsErrorRecordException: не удалось обработать преобразование аргумента для параметра« Test ». В аргументе ожидается ссылочный тип."
Пример:
Для простого сценария:
Param (
[ref]
$Test
)
$Test.Value = "Hello"
Write-Output $Test
А вот код C#:
string script = {script code from above};
PowerShell ps = PowerShell.Create();
ps = ps.AddScript($"New-Variable -Name \"Test\" -Value \"Foo\""); // creates variable first
ps = ps.AddScript(script)
.AddParameter("Test", "([ref]$Test)"); // trying to pass reference variable to script code
ps.Invoke(); // when invoked, generates error "Reference type is expected in argument
Я пробовал AddParameter и AddArgument.
То, что я получил, - это сначала создать свой сценарий как блок сценариев:
ps.AddScript("$sb = { ... script code ...}"); // creates script block in PowerShell
ps.AddScript("& $sb -Test ([ref]$Test)"); // executes script block and passes reference parameter
ps.AddScript("$Test"); // creates output that shows reference variable has been changed
Любая помощь?