У меня есть функция, определенная следующим образом:
function Get-LatestProjects
{
[CmdletBinding()]
Param
(
[Parameter(ValueFromPipeline = $true, Position = 0)]
[Company.Project.Entities.Project[]] $Projects
)
Begin {}
Process
{
...
}
End {}
}
Я вызываю эту функцию из C #, и параметр в коде является массивом этого типа, но я получаю эту ошибку:
Невозможно обработать преобразование аргумента для параметра «Проекты». Невозможно преобразовать значение "Company.Project.Entities.Project []" типа "Company.Project.Entities.Project []" в тип "Company.Project.Entities.Project".
Код C #, который делает вызов:
var script = @". \\server01\Runspace.ps1; Get-LatestProjects $args";
var args = _pmRepository.GetAllProjects().ToArray(); // GetAllProjects returns List<Project>
using (Runspace runSpace = RunspaceFactory.CreateRunspace())
{
runSpace.Open();
var ps = PowerShell.Create();
ps.Runspace = runSpace;
ps.AddScript(script);
ps.AddArgument(args);
Collection<PSObject> results = ps.Invoke();
...
}
Нужно ли делать какие-либо преобразования объектов, прежде чем передать их в функцию powershell? Или я не могу добавить ограничение типа в функцию powershell для параметра $ Projects?