Windows 8.1无法从cmd或PowerShell提示符启动Powershell - "此应用无法在您的PC上运行"

时间:2016-01-20 23:44:21

标签: windows powershell

Powershell突然从cmd和powershell提示中退出。我没有在工作和退出工作之间安装任何新东西。

当我尝试使用以下命令从cmd窗口(提升和未提升)启动powershell.exe时

C:\Users\myuser>powershell.exe

我从操作系统中得到一个弹出错误:

This app can't run on your PC

关闭弹出窗口后,cmd提示我打了电话然后打印:

Access is denied

到屏幕上(即使我在高架cmd提示符下执行此操作也是如此)

当我尝试使用以下命令在powershell中执行此操作时:

PS C:\Users\myuser> 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。

我已经尝试重新启动计算机并且没有修复它,但我完全不知道下一步该做什么。

2 个答案:

答案 0 :(得分:3)

@ PetSerAl在关于这个问题的评论中给出了关键指针。

"此应用无法在您的PC上运行" Windows 8或更高版本上的弹出错误消息 "This app can't run on your PC" pop-up error message on Windows 8+ 表示:

  • 损坏的文件,例如0字节*.exe文件,尤其是然后是"访问被拒绝"控制台出错。

  • 或越来越不常见的尝试在32位版本的Windows上运行64位可执行文件。

疑难解答步骤:

  • 在命令提示符(cmd.exe控制台)中,运行 where.exe <executable-name> ;

    在PowerShell中,运行 Get-Command -All <executable-name> ,它按完整路径显示按该顺序列在$env:PATH环境变量中的目录中的所有可执行文件。
    请注意,与where.exe不同,Get-Command也会在当前目录中查找,并在那里看第一个
    因此,返回的第一个路径是在仅指定可执行名称时实际执行的可执行文件。

    • 请注意,当前目录中的匹配项(如果由where.exe找到)仅在从cmd.exe(从命令提示符或批处理文件)调用可执行文件时才有意义,因为PowerShell的设计不允许仅通过名称从当前目录调用可执行文件。
    • 如果要从PowerShell运行where.exe,则需要扩展名.exe,因为命令名where本身是Where-Object cmdlet的内置别名
  • 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

如果要在输出中包含文件大小:

PS> 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

答案 1 :(得分:1)

C:\ Windows \ System32 位置删除 powershell.exe(0KB) 在我的情况下,从系统32删除 powershell.exe(0KB)后,Powershell正常工作