我试图将我的批处理脚本迁移到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)时,它从命令提示符运行完美。
我收到以下错误(附件):
如果有人能帮助我,我将不胜感激。提前谢谢。
答案 0 :(得分:1)
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"
}
这只是一个帮助我运行脚本(“”“)的转义字符。
我希望它可以帮助别人不拉头发。
答案 1 :(得分:1)
您也可以尝试使用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"
答案 2 :(得分:0)
您需要使用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
}