将PsObject类型的对象转换为HtmlWebResponseObject

时间:2018-02-15 20:07:44

标签: powershell

我正试图绕过invoke-webrequest倾向于挂起记忆并杀死我的整个剧本。到目前为止,我已经使用get-job编写了一个脚本块,它从foreach

调用它

start-job -scriptblock {invoke-webrequest $using:varSiteVariable} -name jobTitle | out-null

我等待10秒,然后使用receive-job将最近作业的输出捕获到一个变量中,然后我想以与我使用{{{I}时相同的方式解析为PowerShell HtmlWebResponseObject 1}}直接。这背后的逻辑是,如果没有要解析的内容,我将抛出脚本执行并返回到第一个,因为invoke-webrequest已经明显崩溃了。

但是,当我将数据从invoke-webrequest提取到变量时,它始终为jobTitle类型,这意味着它缺少我用来执行所有操作的关键PsObject方法进一步解析HTML代码;该方法似乎特别属于ParsedHtml类型的对象。似乎没有办法让我发现将对象强制转换为此类型,也没有任何方法可以在类型之后将其转换为另一种。

我不能简单地在作业中定义变量,然后在作业之外引用它,因为这两个命令发生在不同的上下文中并且不共享任何工作空间。我无法将数据写入文件,因为我无法将其作为我需要执行的处理的正确数据类型重新导入。

有谁知道我如何将HtmlWebResponseObject数据转换为PsObject数据?

1 个答案:

答案 0 :(得分:0)

我最终在本文的帮助下解决了这个问题: https://gallery.technet.microsoft.com/Powershell-Tip-Parsing-49eb8810

我无法将数据重新转换为HtmlWebResponseObject,但我能够创建一个HTMLFile类型的新COM对象,并将从我的作业中获取的变量中的数据写入其中。该脚本需要稍微重写,但我用来解析数据的所有重要方法都像以前一样工作。

相关问题