Код Powershell работает по-разному при запуске из исполняемого файла WinRAR SFX

У меня есть много модулей PowerShell, над которыми я работал, и мне было поручено распространять их как один исполняемый файл. Я создал пакетный скрипт для запуска моего PowerShell, и я использую этот пакетный скрипт как цель исполняемого файла WinRAR SFX.

Проблема в том, что когда я запускаю сценарий через командный файл, все работает нормально, но когда я запускаю его, я запускаю его через исполняемый файл, в сценарии возникают ошибки. Эти ошибки не являются ошибками "Failure", а являются исключениями, генерируемыми моим собственным сценарием powershell. Мой код PowerShell работает по-разному, когда он запускается через пакет или WinRAR SFX. Кто-нибудь испытывал это и знает, как это исправить?

Если вы хотите получить больше информации о типе ошибки, которую выдает мой PowerShell, в моем скрипте я сначала выполняю поиск в небольшой части реестра. Когда я запускаю его с упаковщиком пакетного сценария, он запускается через ~ 30 секунд без ошибок. Когда я запускаю его с исполняемым файлом WinRAR SFX, он выдает эту ошибку:

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, но не в пакетной версии. Есть идеи?

0 ответов

Другие вопросы по тегам