Powershell 无法“看到” dnscmd.exe

Powershell 无法“看到” dnscmd.exe

我对这个完全不知所措。最近我的许多 powershell 脚本开始失败,因为它们无法找到命令 dnscmd.exe。

让我感到困惑的是,可执行文件存在且可以运行,我可以在命令提示符中正常运行它。我在 powershell 中尝试了以下操作来运行命令:

  • dns命令
  • & dnscmd
  • & dnscmd.exe
  • & c:\windows\system32\dnscmd.exe

全部返回“术语 dnscmd 未被识别为 cmdlet、函数、脚本文件或可操作程序的名称....”

有人能告诉我为什么 powershell 完全无法看到命令,而正常的命令提示符/windows 资源管理器等可以吗?使用 powershell 2。

答案1

在我看来,这听起来像是文件系统重定向器的工作。您运行的是 64 位操作系统吗?

例如,当您使用 PowerShell (x86) 在 64 位操作系统上调用 C:\Windows\system32\dnscmd.exe 时,它​​将被重定向到 C:\Windows\SysWow64\dnscmd.exe。重定向发生在访问文件夹时,因此即使您明确提供了可执行文件的路径,您仍会被转移。可以通过调用本机 Windows API 在当前线程上禁用此功能,也可以通过使用某些变量和别名来避免此功能。

更多信息请点击这里: http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx

答案2

这是文件系统重定向,但你可以绕过

代替

C:\windows\system32

(重定向器将抓住)使用

C:\windows\sysnative\dnscmd.exe

答案3

执行后会得到什么:

Get-Command dnscmd.exe -CommandType 应用程序

答案4

我遇到了完全相同的问题,原来是我意外固定了 x86 版本的 PowerShell。

文件系统重定向器确实有一些神奇的作用……

相关内容