PowerShell add-type无法加载程序集

时间:2015-01-29 10:49:14

标签: .net powershell add-type

第一次提问,请耐心等待我

我发现了PowerShell 3 Add-Type cmdlet中的一个错误。

我有一个使用add-type几次的脚本,这个脚本设置为每2分钟通过任务调度程序运行,这个任务有5个实例,所有实例都在不同的用户上下文中运行。

脚本是在PowerShell 2出现时编写的,这个设置完美无缺,我们没有将我们的机器升级到PowerShell 3,并且已经开始收到如下所示的大量错误。

Error Cannot bind parameter 'Path' to the target. Exception setting "Path": "Cannot find path 'C:\libs\htmlagility\HtmlAgilityPack.dll' because it does not exist."
Generated by: Add-Type -Path $dllPath 
At C:\temp\hpsm-wintel-mbx.ps1:509 char:18 + Add-Type -Path $dllPath + ~~~~~~~~
Stack trace at System.Management.Automation.LocationGlobber.ExpandMshGlobPath(String path, Boolean allowNonexistingPaths, PSDriveInfo drive, ContainerCmdletProvider provider, CmdletProviderContext context) at System.Management.Automation.LocationGlobber.ResolveDriveQualifiedPath(String path, CmdletProviderContext context, Boolean allowNonexistingPaths, CmdletProvider& providerInstance) at System.Management.Automation.LocationGlobber.GetGlobbedMonadPathsFromMonadPath(String path, Boolean allowNonexistingPaths, CmdletProviderContext context, CmdletProvider& providerInstance) at System.Management.Automation.LocationGlobber.GetGlobbedProviderPathsFromMonadPath(String path, Boolean allowNonexistingPaths, CmdletProviderContext context, ProviderInfo& provider, CmdletProvider& providerInstance) at System.Management.Automation.LocationGlobber.GetGlobbedProviderPathsFromMonadPath(String path, Boolean allowNonexistingPaths, ProviderInfo& provider, CmdletProvider& providerInstance) at Microsoft.PowerShell.Commands.AddTypeCommand.set_Path(String[] value) at System.Management.Automation.ReflectionParameterBinder.BindParameter(String name, Object value)

我可以确认这是有效的,当我禁用4个实例并让它们自己运行时,它会一直运行而没有问题,但是一旦启动另一个实例,就会抛出相同的错误。

从我已经完成的各种测试中,我得出的结论是,当add-type几乎在同一个地方调用时,有一个错误时间,我发现这非常奇怪,特别是因为每个脚本都在不同的用户环境中运行。

为了解决这个问题,我设置了任务调度程序来随机执行,不再出现任何错误。

有没有其他人遇到这个或知道我做错了什么?

0 个答案:

没有答案