Я использую приведенный ниже фрагмент кода для вызова сценария PowerShell из c#
using (var powershell = PowerShell.Create())
{
// arg1 is Arraylist
powershell.AddCommand("Invoke-Command")
.AddParameter("ComputerName", remoteComputer)
.AddParameter("FilePath", scriptPath)
.AddParameter("ArgumentList", new object[] { arg1 });
psOutput = powershell.Invoke();
}
Так выглядит сценарий powershell
Param([System.Collections.ArrayList]$Array)
$Failed = New-Object -TypeName "System.Collections.ArrayList"
Function Get-CNF
{
foreach ($n in $global:Array) {
if( // Some condition)
{
$Failed.Add($n);
}
}
return $Failed
}
Я не могу найти способ специально искать только возвращенное значение ArrayList
, потому что я выполняю другую группу операций в файле сценария PowerShell, а возвращаемое значение psOutput
содержит все из них, включая возвращенное значение $Failed
. Как дифференцировать возвращаемое значение? Есть ли способ передать параметр в качестве ссылки из C# в PowerShell (я могу добавить свой список к указанному параметру), а затем использовать его в c# файле?
Я уже посмотрел кучу ответов здесь, в StackOverflow, но они не соответствуют моим требованиям, потому что мои выходные данные invoke
включали другую группу выходных данных.