繁体   English   中英

Powershell,使用 msdeploy 启动或停止 iis 站点

[英]Powershell, start or stop iis site using msdeploy

我试图将我的批处理脚本迁移到 powershell。

我尝试编写脚本并从 powershell ise 运行它。

$sites = @("abc","xyz","pqr")
foreach ($site in $sites)
{
    msdeploy -verb:sync -verbose -source:runcommand -dest:runcommand="$env:windir\system32\inetsrv\appcmd stop site /site.name":$site
}

当我运行命令(msdeploy)时,它可以从命令提示符完美运行。

我收到以下错误(附后):

错误捕获

如果有人可以帮助我,我将不胜感激。 提前致谢。

您需要使用Invoke-Expression ,它允许您将字符串作为命令执行。 将您的命令存储为字符串并将其作为参数传递给Invoke-Expression

$sites = @("abc","xyz","pqr")
$commandPrefix = 'msdeploy -verb:sync -verbose -source:runcommand -dest:runcommand="$env:windir\system32\inetsrv\appcmd stop site /site.name"'
foreach ($site in $sites)
{
    $command = $commandPrefix ":" $site
    Invoke-Expression $command
} 

经过这么多的斗争,我想通了,并解决了这个问题。

foreach($site in $sites){
msdeploy -verb:sync -verbose -source:runcommand -dest:runcommand=`"$env:windir\system32\inetsrv\appcmd stop site /site.name`":"$site",computername="$serverName",username="$user",password="$passCode"
}

它只是一个帮助我运行脚本的转义字符(“`”)。

我希望它能在不拉头发的情况下帮助某人。

您还可以尝试使用 recycleApp 提供程序:

msdeploy -verb:sync -source:recycleApp -dest:recycleApp="MySite",recycleMode="StopAppPool"
//deploy and sync content
msdeploy -verb:sync -source:recycleApp -dest:recycleApp="MySite",recycleMode="StartAppPool"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM