new不出来html文件,使用New-Object -ComObject解析本地HTML文件“HTMLFile”坏了?

我一直在运行密码过期脚本的传递6个月没有任何问题。该脚本将读取一个静态html文件并更改内存中的一些内容,然后将发送一封html电子邮件给所有过期密码的用户。使用New-Object -ComObject解析本地HTML文件“HTMLFile”坏了?

剧本似乎在过去的一周左右破了。经过进一步调查,我已经将错误范围缩小到Powershell应创建新ComObject并将该HTML文件写入ComObject的部分。

我现在得到的错误:

No coercion operator is defined between types 'System.Array' and 'System.String'

At line:1 char:1

+ $html.write($source);

+ ~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (:) [], InvalidOperationException

+ FullyQualifiedErrorId : System.InvalidOperationException

上述错误发生在我运行下面的代码行:

$html = New-Object -ComObject "HTMLFile"

$src = Get-Content -path "./passwordreminder.html" -Raw

$html.write($src)

当我调用write()方法我得到的错误。

自从它在过去6个月里一直很好的工作以来,唯一能想到的就是改变了我的powershell版本。我相信当我开始运行这个脚本时,我使用的是Powershell v4.0,但在Windows更新之后,我猜Powershell现在是v5.0。如下所示:

Name Value

---- -----

PSVersion 5.0.10105.0

WSManStackVersion 3.0

SerializationVersion 1.1.0.1

CLRVersion 4.0.30319.34209

BuildVersion 10.0.10105.0

PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}

PSRemotingProtocolVersion 2.3

脚本在Windows Server 2012 R2 OS上运行。

任何人有任何想法?

我在调用ComObject上的IHTMLDocument2_write()方法的其他问题中看到过一些建议,但是当我尝试调用它时,此方法不存在。

更新:

我可以确认这是确实是在我的版本的PowerShell BROKEN。

我只是能够使用相同的操作系统,但低于Powershell的版本来测试不同的服务器上的同一代码:

Name Value

---- -----

PSVersion 4.0

WSManStackVersion 3.0

SerializationVersion 1.1.0.1

CLRVersion 4.0.30319.34014

BuildVersion 6.3.9600.17090

PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}

PSRemotingProtocolVersion 2.2

和代码按预期工作。

有人知道可以在这个新版本的Powershell中使用什么吗?

2015-06-20

kevin

+1

你可以尝试一个IE对象:'$ ie = New-Object -COM'InternetExplorer.Application'; $ ie.Navigate(“file:// $($ PWD.Path)/passwordreminder.html”'。我没有PowerShell v5,所以我无法测试。如果'HTMLFile'被破坏,这可能会 –

+1

在工作服务器和非工作服务器上都可以将违规行更改为'$ html.Write;',运行它并比较结果?这将输出哪些重载的Write方法可用在'$ html'对象上,也许有一个新的可用,PowerShell现在试图调用“错误”的。 –

+0

@Ansgar感谢,仍然可以在v5.0 !!!!我能够重写部分脚本使用这种方法,但是这种方法当然并不理想,脚本会编辑内存中的HTML文档,以便每个用户都有一个即将到来的密码,这意味着我必须为每个人启动一个新的IE进程。在某些日子里可以达到20-30 +进程,我可以通过运行一个“停止进程”来杀死其中的一些进程,但仍然会比较大到以前的工作解决方案。我会用这个,直到我能找到更好的解决方法。谢谢!!!! –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值