Windows 8.1 не может запустить Powershell из командлета cmd или командной строки powershell - " это приложение не может работать на вашем компьютере"



Powershell внезапно перестал открываться из командлетов cmd и powershell. Я не установил ничего нового Между тем, когда он работал и когда он перестал работать.



Когда я пытаюсь запустить powershell.exe из окна cmd (как повышенного, так и не повышенного) со следующей командой



C:Usersmyuser>powershell.exe


Я получаю всплывающее сообщение об ошибке от ОС, которое говорит:



This app can't run on your PC


Как только я закрываю это всплывающее окно, командная строка, из которой я сделал вызов, выводит:



Access is denied


К экрану (да, даже когда я делаю это в командной строке с повышенными правами)



Когда я пытаюсь сделать это в powershell с помощью следующей команды:



PS C:Usersmyuser> powershell.exe


Я получаю:



Program 'powershell.exe' failed to run: The specified executable is not a valid application for this OS platform.
At line:1 char:1
+ powershell.exe
+ ~~~~~~~~~~~~~~.
At line:1 char:1
+ powershell.exe
+ ~~~~~~~~~~~~~~.
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorID : NativeCommandFailed


Очевидно, даже powershell больше не любит powershell.



Я попытался перезагрузить компьютер, и это не помогло, но я совершенно не знаю, что делать дальше.
634   2  

2 ответов:

@PetSerAl дал критический указатель в комментариях к этому вопросу.

Всплывающее сообщение об ошибке" это приложение не может работать на вашем компьютере " на Windows 8 или выше "Это приложение не может работать на вашем компьютере" всплывающее сообщение об ошибке на Windows 8+ указывает:

  • Поврежденный файл , например 0-байтовый файл *.exe , esp. когда следует ошибка "Доступ запрещен" в консоли.

  • Или, что все реже и реже, попытка запустить 64-разрядный исполняемый файл на 32-разрядной версии Окна.

Шаги по устранению неполадок:

  • Из командной строки (консольcmd.exe) выполните команду where.exe <executable-name>;
    из PowerShell, выполнить Get-Command -All <executable-name>, который показывает вам все исполняемые файлы с этим именем, присутствующие в каталогах, перечисленных в переменной окружения $env:PATH в этом порядке, по их полным путям.
    Обратите внимание, что where.exe, в отличие от Get-Command, также смотрит в текущий каталог, и смотрит туда первый.
    Таким образом, первый возвращаемый путь - это исполняемый файл, который фактически выполняется, когда указано только имя исполняемого файла .

      Обратите внимание, что совпадение в текущем каталоге , если оно найдено where.exe, имеет значение только при вызове исполняемого файла из cmd.exe (из командной строки или пакетного файла), поскольку PowerShell по своей конструкции не позволяет вызывать исполняемые файлы из текущего каталога только по имени.
  • Если вы хотите запустить where.exe из PowerShell, расширение .exe является обязательным, поскольку имя команды where само по себе является встроенным псевдонимом для командлета Where-Object.
  • В выводе из where.exe / Get-Command, проверка:

    • если исполняемый файл, который вы ожидаете, указан первым.
    • если его размер ненулевой.
  • Удалите непредвиденные (нулевые байты) исполняемые файлы или, если вы ожидаете, что они будут там, переустановите их.


  • Пример:

    Ищи всех всех исполняемые файлы с именем powershell.exe в текущем каталоге и в каталогах, перечисленных в $env:PATH.

    Обратите внимание, что истинным домом powershell.exe является C:\Windows\System32\WindowsPowerShell\v1.0, как это отражено в $PSHOME.

    Из cmd.exe (обычная Командная строка):

    where powershell.exe 
    

    Пример вывода:

    C:\Windows\System32\powershell.exe
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    

    Из PowerShell:

    Get-Command -All powershell.exe
    

    Если вы также хотите посмотреть в текущем каталоге , используйте
    Get-Command -All .\powershell.exe, powershell.exe

    Пример вывода:

    CommandType     Name            Version    Source
    -----------     ----            -------    ------
    Application     powershell.exe  0.0.0.0    C:\WINDOWS\system32\powershell.exe
    Application     powershell.exe  10.0.14... C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
    

    Если вы хотите включить размер файла в выводе:

    > where.exe powershell.exe | % { [system.io.fileinfo] $_ |
      select fullname, length, @{ n = 'Version'; e = { $_.versioninfo.FileversionRaw } } }
    
    FullName                                                  Length Version
    --------                                                  ------ -------
    C:\Windows\System32\powershell.exe                             0
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 446976 10.0.14393.206
    

    Удалите оболочку .exe (с 0KB) из location C:\Windows\System32 В моем случае Powershell работает нормально после удаления powershell.exe (с 0KB) из system 32

    Comments

      Ничего не найдено.