Назад | Перейти на главную страницу

Powershell не может «увидеть» dnscmd.exe

Я в полной растерянности с этим. Недавно некоторые мои сценарии PowerShell начали давать сбой, так как они не могут найти команду dnscmd.exe.

Что меня беспокоит, так это то, что исполняемый файл существует и работает, и я могу запустить его в командной строке. Я пробовал следующее в PowerShell для запуска команды:

Все возвращают «Термин dnscmd не распознается как имя командлета, функции, файла сценария или работающей программы ....»

Может ли кто-нибудь объяснить мне, почему PowerShell полностью не может видеть команду, а обычная командная строка / проводник Windows и т. Д. Может? Использование powershell 2.

Для меня это похоже на работу перенаправителя файловой системы. Вы используете 64-битную ОС?

Например, когда вы вызываете C: \ Windows \ system32 \ dnscmd.exe в 64-битной ОС с помощью PowerShell (x86), он будет перенаправлен на C: \ Windows \ SysWow64 \ dnscmd.exe. Перенаправление происходит в момент доступа к папке, поэтому даже если вы явно указываете путь к исполняемому файлу, вас все равно перенаправят. Это можно отключить в текущем потоке с помощью вызовов собственных API-интерфейсов Windows или можно избежать с помощью определенных переменных и псевдонимов.

Больше информации здесь: http://msdn.microsoft.com/en-us/library/aa384187%28VS.85%29.aspx

Это перенаправление файловой системы, но вы можете обойти

Вместо того

C:\windows\system32

(который перенаправитель захватит) используйте

C:\windows\sysnative\dnscmd.exe

Что вы получаете, когда выполняете:

Get-Command dnscmd.exe -CommandType Application

Это не очень своевременно, но в Windows 8.1 я обнаружил, что он ищет это в System32, но не находит. Как ни странно, он существует в системе, но вместо этого находится в каталоге winsxs. Копирование его в System32 позволило ему работать должным образом. У меня нет объяснений, почему это так, но если вы столкнетесь с этой проблемой, это может быть для вас обходным путем.

У меня была точно такая же проблема, оказалось, что я случайно закрепил x86-версию PowerShell.

В File System Redirector действительно происходит какое-то волшебство ...

просто установите функцию «Инструменты DNS-сервера». Инструменты удаленного администрирования сервера -> инструменты на основе ролей -> инструменты DNS-сервера