如何在powershell中使用C#进行这种类型的转换?

时间:2013-10-08 13:27:47

标签: c# windows powershell casting

我正在使用wuapi编写一个脚本,用于扫描,下载和安装未连接到Internet的计算机的更新。我已完成大部分此脚本,但我需要能够对其他对象进行演员(我相信)。

我在这里找到了完全符合我需要的代码,但在C#:WUApiLib IUpdateInstaller2 yields Error; Some OS updates install others throw HResult -2145124318

这是代码的样子:

  var collection = new UpdateCollection();
  IList<string> updateFiles = Directory.GetFiles(updateFolder);
  var fileCollection = new StringCollection();

  try
  {
       foreach (var file in updateFiles)
               fileCollection.Add(file);

       //Error happens here on certain updates. Not all.

       /** THIS LINE BELOW IS THE ONE I NEED **/
       ((IUpdate2)update.BundledUpdates[0]).CopyToCache(fileCollection);
       collection.Add(update);
       return collection;
  }
  catch (Exception e)
  {
     return null;
  }

((IUpdate2)update.BundledUpdates[0]).CopyToCache(fileCollection);返回IUpdate个对象,但为了使用CopyToCache函数,它必须是IUpdate2个对象。我似乎无法弄清楚如何让这部分工作,因为powershell给了我一个“加载库”类型的错误。

有人知道我在powershell中如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

如果问题是方法CopyToCache是作为显式接口实现实现的,可以尝试

[IUpdate2].GetMethod("CopyToCache").Invoke($update.BundledUpdates[0], @($fileCollection))

或类似。