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

Почему PowerShell запускает исполняемые файлы в отдельном окне?

На одном из моих серверов (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