Powershell 甚至无法打开记事本

Powershell 甚至无法打开记事本

实际上,我的Powershell 无法解析许多命令而 cmd/bash 可以:节点、git、npm 等...

PS C:\Users\vssen> notepad
notepad : The term 'notepad' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ notepad
+ ~~~~~~~
    + CategoryInfo          : ObjectNotFound: (notepad:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

但是 PowerShell必须至少用“notepad”命令打开记事本!

注意:是通过“notepad.exe”命令打开记事本,但是必须在没有“.exe”的情况下执行此操作。

我认为这个错误在我使用 git 和 node 时也会给我带来问题,而且我看到很多类似的未解决的问题,但仍然没有答案。其他命令的错误行为示例:npm:打开新控制台;npm.exe --version:无输出;git:未找到;node:未找到;git.exe:打开和关闭控制台;node.exe:打开 nodejs 控制台窗口;

我尝试过的事情

  • 清除所有用户和系统路径,例如仅添加 nodejs 路径,或者仅添加 system32 路径
  • 分布式系统管理
  • 证监会/扫描
  • 安装独立的 PowerShell 7(跨平台)-同样的问题!
  • Get-Command 找不到没有“.exe”的路径,但可以找到带有“.exe”的路径
PS C:\Users\vssen> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.906
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.906
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

环境变量

vssen:路径:C:\Program Files\nodejs;C:\Users\vssen\AppData\Local\Programs\Python\Python39\Scripts\;C:\Users\vssen\AppData\Local\Programs\Python\Python39\;C:\Users\vssen\AppData\Local\Microsoft\WindowsApps;C:\Users\vssen\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\vssen\AppData\Roaming\nvm;C:\Program Files\PostgreSQL\13\bin;

系统: 路径:C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files\Conan\conan;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%SYSTEMROOT%\System32\OpenSSH\;%NVM_HOME%;%NVM_SYMLINK%;C:\Program Files\PostgreSQL\13\bin;C:\Program Files\dotnet\;C:\MinGW\bin;C:\Program Files\CMake\bin;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\PowerShell\7\;C:\Program Files\Amazon\AWSCLIV2\

我已经验证了 env Path 中的每个路径,所有链接都是有效的(并且 PowerShell 和 cmd 也必须处理无效链接!)

C:\Users\vssen>where where
C:\Windows\System32\where.exe


C:\Users\vssen>where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

也许有人认识微软开发人员)非常感谢您的帮助!我不想重新安装 Windows...

PS:所有可能相关和不相关的事情都值得一提

  • 操作系统内部版本:19043.985
  • Windows 功能体验包 120.2212.2020.0(不知道它是什么)
  • 我有 WSL
  • 通过 nvm 使用 nodejs
  • 有 bash (来自 git 安装程序)

答案1

PowerShell 仍然依赖系统 PATH 变量和 PATHEXE 变量来解析执行程序的命令,该命令描述将执行哪些文件扩展名。

一些非常糟糕的软件可能从我的机器中删除了这个环境变量,所以我将其添加为默认变量:

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

一旦我恢复系统变量,我就可以从 PowerShell 启动记事本

相关内容