На одном из моих серверов (2008 R2) powershell отказывается запускать исполняемые файлы без расширения, поэтому ввод cmd (или & cmd) в командной строке приводит к следующему сообщению об ошибке:
Термин "cmd" не распознается как имя командлета
При вызове исполняемого файла одним из следующих способов открывается отдельное окно (которое выполняется асинхронно по отношению к родительскому). Я пробовал это в версии PowerShell x86 и в версии x64. Я пробовал аргумент -Noprofile. PATH вроде в порядке. В него входит System32 и все.
Единственный способ, которым мне удалось выполнить cmd inline form powershell, - это открыть стандартную оболочку cmd.exe, запустить из нее powershell.exe и выполнить из нее эхо-тест cmd / c. Начало, а?
Что мне попробовать дальше?
Из нашего обмена комментариями видно, что переменная системной среды %PATHEXT%
не установлен. Это мешает ОС определять, какие расширения файлов следует проверять при поиске исполняемых файлов. Эта системная переменная является производным от следующего значения реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT
Если это значение отсутствует, вы можете воссоздать его следующим образом:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /t REG_SZ /v "PATHEXT" /d ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" /f