2015-02-09 4 views
0

я могу начать Кассини в пакетном файле, как так:неблокирования IIS Express стартапы

start "" /B "%common%\microsoft shared\DevServer\11.0\WebDev.WebServer40.exe" /port:%port% /path:"%~dp0%svcDir%" 

Это начинается без блокировки командной строки. Можно ли запустить IISExpress без блокировки командной строки? Я пытался экономить следующую команду в startiis.ps1:

start-process "C:\Program Files (x86)\IIS Express\iisexpress.exe" /config:%userprofile%\Documents\IISExpress\config\applicationhost.config /CompanyName.ProjectName.api -windowstyle Hidden 

Когда я бегу & ".\startiis.ps1" я получаю ошибки:

Start-Process : A positional parameter cannot be found that accepts argument '/CompanyName.ProjectName.api'.

ответ

2

Несколько вещей о вашем подходе ...

  1. Вызов переменных окружения в PowerShell использует провайдера $env
  2. Если вы собираетесь использовать Start-Process необходимо отделить вашу команду и ваши аргументы

start-process "C:\Program Files (x86)\IIS Express\iisexpress.exe" -ArgumentList "/config:$($env:USERPROFILE)\Documents\IISExpress\config\applicationhost.config /CompanyName.ProjectName.api" -WindowStyle Hidden 

Start-Process бросает ошибку, поскольку он не имеет 3-й позиционные параметры. В вашем примере разбивка состояла в том, что «C: \ Program Files (x86) \ IIS Express \ iisexpress.exe» занял -FilePath и «/config:%userprofile%\Documents\IISExpress\config\applicationhost.config» занял позицию для -ArgumentList. Вы хотели, чтобы все эти части были аргументами.

Вам не нужно было указывать -ArgumentList. Процитировать все аргументы в виде строки было бы достаточно.

Вы также можете использовать оператор вызова для выполнения, если вам не нужны другие функции Start-Process. Это хорошая практика, чтобы процитировать аргументы, чтобы убедиться, что они правильно разбираются.

& "C:\Program Files (x86)\IIS Express\iisexpress.exe" "/config:$($env:USERPROFILE)\Documents\IISExpress\config\applicationhost.config" "/CompanyName.ProjectName.api"