如何从C#中的Pipeline.Invoke强制转换PSCustomObject

时间:2019-10-05 07:47:16

标签: c# powershell

我正在编写一条命令,该命令通过PSsession连接到远程计算机,从远程计算机获取.NET对象,然后在本地使用它。

但是,我返回的对象不是我在远程端创建的.NET对象,而是一个PSCustomObject,它拒绝转换回其原始对象。

有人知道如何执行此操作吗?

此方法只是众多方法中的一种,因此,对于如何处理任何.NET对象而不是此方法中的特定对象的一般性回答,将不胜感激。

我得到的错误是; 无法将类型为“ System.Management.Automation.PSCustomObject”的对象转换为类型为“ System.IO.FileInfo”。

谢谢 标记

readonly PSSession session;
public FileInfo GetFileInfo(string p) 
    {

        Pipeline pipe = session.Runspace.CreatePipeline();

        string format = "(New-object System.IO.FileInfo \"{0}\") -as [System.IO.FileInfo]";  // Have tried many ways to force it to a FileInfo
        string command = string.Format(format,p);

        pipe.Commands.AddScript(command);
        Collection<PSObject> res = pipe.Invoke();

        foreach (PSObject ps in res)
        {
                      return (FileInfo)ps.BaseObject;
        }


        // no items
        return null;
    }

0 个答案:

没有答案