msdeploy从包含多个站点的程序包中恢复一个站点

时间:2018-08-24 18:50:33

标签: iis restore webdeploy

我们为多个站点创建一个msdeploy软件包,如下所示:

"c:\Program Files\iis\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest=MultipleSitesMultipleProviders.xml -dest:package=Test.zip,encryptPassword="password" -disableLink:ContentExtension -enableLink:AppPoolExtension  

MultipleSitesMultipleProviders.xml

<sitemanifest>

   <appHostConfig path="SITE1" />
   <appPoolNetFx path="SITE1" />
   <dirPath path="C:\SITES\SITE1" />

   <appHostConfig path="SITE2" />
   <appPoolNetFx path="SITE2" />
   <dirPath path="C:\SITES\SITE2" />

   <appHostConfig path="SITE3" />
   <appPoolNetFx path="SITE3" />
   <dirPath path="C:\SITES\SITE3" />

</sitemanifest>

这是恢复软件包的方法

"c:\Program Files\iis\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -dest:auto -source:package=Test.zip,encryptPassword="password"

这将还原所有三个站点。我要解决的问题是如何告诉msdeploy.exe仅还原我指定的站点之一。我认为可以使用-skip rule完成此操作,该操作将告诉部署跳过我们不想安装的两个站点。但是我不明白该命令的格式是什么样的。

这甚至有可能做到吗?任何帮助将不胜感激!谢谢。

更新:我想我找到了一种通过UI进行此操作的方法。Import Server or Site Package 这仅从包含两个站点的软件包中安装了SITE1,而没有安装SITE2。我想从命令行了解如何做到这一点。

1 个答案:

答案 0 :(得分:0)

了解如何执行此操作。除SITE1之外的所有网站均不包括在内。您需要使用软件包zip文件中的archive.xml并提供xpath表达式,该表达式将排除由六个MultipleSitesMultipleProviders.xml条目生成的六个元素。

阻止归档文件复制的xpath很棘手,因为archive.xml中的元素是'',并且您会认为xpath表达式为//MSDeploy.dirPath[@path='C :\ SITES \ SITE3'],但无效,但// dirPath [@ path ='C:\ SITES \ SITE3']起作用。不知道为什么会这样。

-skip=xPath=//appHostConfig[@path='SITE2'] -skip:xPath=//appPoolNetFx[@Site='SITE2'] -skip:xPath=//dirPath[@path='C:\SITES\SITE2'] -skip=xPath=//appHostConfig[@path='SITE3'] -skip:xPath=//appPoolNetFx[@Site='SITE3'] -skip:xPath=//dirPath[@path='C:\SITES\SITE3'] 

我猜想还有其他方法可以完成同一件事,但我很高兴能找到可行的方法!