Iis msdeploy从包含多个站点的包还原一个站点

Iis msdeploy从包含多个站点的包还原一个站点,iis,restore,webdeploy,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:AppPoolExt

我们为多个站点创建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  
multipleSiteMultipleProviders.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>
这将恢复所有三个站点。我试图解决的问题是如何告诉msdeploy.exe仅恢复我以某种方式指定的一个站点。我认为这可以通过使用来完成,这将告诉部署跳过我们不想安装的两个站点。但是我不明白这个命令的格式是什么

这可能吗?任何帮助都将不胜感激!多谢各位

更新:我想我找到了一种通过UI实现这一点的方法。
这只安装了包含两个站点的软件包中的SITE1而不是SITE2。我想了解如何从命令行执行此操作。

了解了如何执行此操作。不包括SITE1以外的所有站点。您需要在包zip文件中使用archive.xml,并使用xpath表达式排除由六个multipleSiteMultipleProviders.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'] 

我猜还有其他方法可以完成同样的事情,但我很高兴能找到一些有效的方法

发现添加过多的-skips会导致msdeploy性能严重下降,并提出了一种通过使用“not”XPath来减少-skips数量的解决方案。skip=xPath=//appHostConfig[not(@path='SITE1')]-skip:xPath=//appPoolNetFx[not(@Site='SITE1')]-skip:xPath=//dirPath[not(@path='C:\SITES\SITE1')]。(像这样自言自语有点奇怪)
-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']