我有很多我一直在研究的 powershell 模块,我的任务是将它们作为单个可执行文件分发。我制作了一个批处理脚本来运行我的 powershell 东西,并且我使用该批处理脚本作为 WinRAR SFX 可执行文件的目标。
问题是当我通过批处理文件运行脚本时,一切正常,但是当我通过可执行文件运行它时,脚本有错误。这些错误不是“失败”错误,而是我自己的 powershell 脚本抛出的异常。通过批处理或 WinRAR SFX 运行时,我的 powershell 代码运行方式不同。有没有人经历过这个并知道如何解决它?
如果您想了解有关我的 powershell 抛出的错误类型的更多信息,请在我的脚本中对注册表的一小部分进行广度优先搜索。当我使用批处理脚本包装器运行它时,它会在大约 30 秒内运行而没有错误。当我使用 WinRAR SFX Executable 运行它时,它会抛出此错误:
Cannot convert argument "index" with value "CLSID", for "GetValue" to
type "System.Int64": Cannot convert value "CLSI" to type "System.Int64".
Error: "Input string was not in a correct format.""At
C:\Users\Administrator\AppData\Local\Temp\RarSFX0\myscript.ps1:270
char:33
+ elseif ($key.getValue("CLSID") -new $null {
+
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentCovnersionInvalidCastArgument
在检查了我正在检查的所有对象的类型之后,在某些时候我的注册表项对象变成了 WinRAR 版本中的注册表项对象数组,而不是批处理版本。有任何想法吗?