У меня есть команда ниже, и она возвращает мне нулевой объект. Когда я запускаю команду отдельно в окне PowerShell, я получаю правильный результат. Ниже приведен мой метод PowerShell, который вызывает команду, а также команду PowerShell, которую я определил. Я в основном хочу вернуть строковое значение. Пожалуйста, дайте мне знать, что я делаю не так?
C # метод:
public string RunScript( string contentScript, Dictionary<string, EntityProperty> parameters)
{
List<string> parameterList = new List<string>();
foreach( var item in parameters )
{
parameterList.Add( item.Value.ToString() );
}
using( PowerShell ps = PowerShell.Create() )
{
ps.AddScript( contentScript );
// in ContentScript I get "Get-RowAndPartitionKey" on debugging
ps.AddParameters( parameterList );//I get list of strings
IAsyncResult async = ps.BeginInvoke();
StringBuilder stringBuilder = new StringBuilder();
foreach( PSObject result in ps.EndInvoke( async ) )
// here i get result empty in ps.EndInvoke(async)
{
stringBuilder.AppendLine( result.ToString() );
}
return stringBuilder.ToString();
}
}
}
Мое определение командлета Powershell GetRowAndPartitionKey
, которое пытается вызвать приведенный выше код:
public abstract class GetRowAndPartitionKey : PSCmdlet
{
[Parameter]
public List<string> Properties { get; set; } = new List<string>();
}
[Cmdlet( VerbsCommon.Get, "RowAndPartitionKey" )]
public class GetRowAndPartitionKeyCmd : GetRowAndPartitionKey
{
protected override void ProcessRecord()
{
string rowKey = string.Join( "_", Properties );
string pKey = string.Empty;
WriteObject( new
{
RowKey = rowKey,
PartitionKey = pKey
} );
}
}
}
EntityProperty
и _2 _ = _ 3_ послеInvoke()
? - person Mathias R. Jessen   schedule 19.02.2021