Получить значение функции из удаленного вызова Powershell

Я удаленно вызываю сценарий Powershell (.ps1), который вызывает функцию из сторонней сборки (компонент Rebex SFTP). Эта функция возвращает целочисленное значение. Этот удаленный вызов выполняется из кода C#.

Я хочу привести результат этого вызова к int для дальнейшей обработки в коде С#.

Как это можно сделать наиболее эффективно?

Вот код:

Фрагмент кода RemoteInvocationManager (пользовательский класс с Powershell Remoting, только важные части):

using (Pipeline pipeline = remoteRunspace.CreatePipeline(scriptText))
{
Collection<PSObject> results = pipeline.Invoke();

       foreach (PSObject obj in results)
       {
         stringBuilder.AppendLine(obj.ToString());
       }
}

Фрагмент кода вызова RemoveInocationManager:

string command = @"& c:\temp\sftp\mytransfer.ps1";
string result = RemoteInvocationManager.RunScript(command);

Фрагмент кода сценария Powershell (файл .ps1):

[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\Rebex\SFTP for .NET 2.0 Trial\bin\Rebex.Net.Sftp.dll")
$sftp = New-Object Rebex.Net.Sftp
$sftp.Connect("127.0.0.1")
$SshPrivateKey = New-Object Rebex.Net.SshPrivateKey("c:\temp\sftp\keys\private\myprivatekey.ppk", "myuser")
$sftp.Login("myuser", $SshPrivateKey)
$sftp.PutFile("c:\temp\sftp\input\file1.txt", "/output/fileout.txt")
$sftp.Disconnect()

person Patrick Peters    schedule 07.12.2011    source источник
comment
Покажите какой-нибудь код, который вы пробовали (соответствующие фрагменты)   -  person manojlds    schedule 07.12.2011


Ответы (1)


Похоже, вы хотите:

int output;
bool isSuccess = int.TryParse(result, out output);
if(isSuccess){
//use outout
}

Обновлять:

Чтобы подавить вывод вещей, которые вам не нужны, используйте [void] или направьте на Out-Null

[void][Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\Rebex\SFTP for .NET 2.0 Trial\bin\Rebex.Net.Sftp.dll")

or

[Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\Rebex\SFTP for .NET 2.0 Trial\bin\Rebex.Net.Sftp.dll") | Out-Null
person manojlds    schedule 07.12.2011
comment
Теперь я получаю две строки, одна с выводом вызова LoadFrom, а вторая возвращает «12» (это размер переданного файла). Есть ли способ подавить вывод 1-й строки, чтобы я мог вызвать предоставленный вами код tryparse на С#? - person Patrick Peters; 08.12.2011