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。
我已经尝试重新启动计算机并且没有修复它,但我完全不知道下一步该做什么。
答案 0 :(得分:3)
@ PetSerAl在关于这个问题的评论中给出了关键指针。
"此应用无法在您的PC上运行" 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的设计不允许仅通过名称从当前目录调用可执行文件。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正常工作