非阻塞IIS Express启动

时间:2015-02-09 20:49:08

标签: powershell

我可以在批处理文件中启动Cassini,如下所示:

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:找不到接受的位置参数   参数'/CompanyName.ProjectName.api'。

1 个答案:

答案 0 :(得分:2)

关于你的方法的一些事情......

  1. 在PowerShell中调用环境变量使用提供程序$env
  2. 如果您要使用Start-Process,则需要将命令和参数分开

  3. 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"