PowerShell 在执行命令时询问 "How do you want to open this file"

PowerShell asks "How do you want to open this file" when executing command

从 Windows 11 升级后,Select-String cmdlet 停止工作,每次我使用它时,它都会尝试“打开未知文件”,如下图所示:

我在尝试从批处理文件 运行 我的一个 ps 脚本时发现了它 - 在 Win 10 中它运行良好,但在 Win 11 中它没有。当我 运行 VSCode 中的代码时,它工作正常,我不知道为什么。

我尝试将文本从 VSCode(如果编码不同)复制到一个新文件并直接复制到 PowerShell 终端,但其中 none 有效。

我也尝试了新的 Windows 11 终端并将 PowerShell 更新到最新版本 (7.2.2 x64),但没有任何效果。

Dis/Enabling Windows PowerShell 2.0 的系统函数在这种情况下也没有效果。

编辑:
我发现如果我在脚本开头 运行 命令 Update-Script (没有任何参数), Select-String 会按预期工作(在此之前该 cmdlet 似乎根本不存在 - Get-Help Select-String 没有找到任何东西,但在使用 Update-Script 后它找到了适当的帮助)。其他一些命令也是如此(例如 Trace-Command)。查看输出:

PS C:\> Get-Command Select-String
CommandType  Name           Version    Source
-----------  ----           -------    ------
Application  Select-String  0.0.0.0    C:\WINDOWS\system32\Select-String

PS C:\> Update-Script
PS C:\> Get-Command Select-String

CommandType  Name           Version    Source
-----------  ----           -------    ------
Cmdlet       Select-String  3.1.0.0    Microsoft.PowerShell.Utility

Trace-Command“使”Select-String 像 Update-Script 一样正常工作并给出以下输出:

DEBUG: CommandDiscovery Information: 0 : Looking up command: Select-String
DEBUG: CommandDiscovery Information: 0 : Cmdlet found: Select-String  Microsoft.PowerShell.Commands.SelectStringCommand 
hello everybody!

为什么我必须这样做(调用 Update-Script),而 Select-String 没有它也能正常工作?

嗯,有很多关于powershell“你想如何打开这个文件”的讨论(没有真正解决),但最后,这是我的问题:

https://serverfault.com/questions/1038546/powershell-start-job-returns-a-how-do-you-want-to-open-this-file-with-some-cm

解决方案:

删除文件 c:\Windows\System32\Select-string(0 字节,无文件扩展名)。我不知道它是怎么到那里的...