1

我正在使用wuapi为未连接到 Internet 的机器编写一个扫描、下载和安装更新的脚本。我已经完成了这个脚本的大部分内容,但我需要能够对不同的对象进行强制转换(我相信)。

我在这里找到了完全符合我需要的代码,但是在 C# 中:
WUApiLib IUpdateInstaller2 会产生错误;一些操作系统更新安装其他人抛出 HResult -2145124318

这是代码的样子:

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

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;

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

有谁知道我如何在 PowerShell 中做到这一点?

4

1 回答 1

2

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

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

或类似的。

请参阅如何从 PowerShell 调用显式实现的接口方法?

于 2013-10-08T14:24:19.327 回答