2013-02-26 161 views
7

我正在寻找像Powershell脚本来检查msdeploy是否安装,如果是,什么版本如何找出当前安装的webdeploy/msdeploy版本?

我已经考虑检查“c:\ Program Files \ IIS”并检查MSDeploy安装那里,但是这总是保证是安装位置?

我需要这个任何给定的服务器计算机

+0

'msdeploy |找到“版本”? – 2013-02-26 19:54:17

+0

@JoachimIsaksson这只会在PATH变量中设置时才起作用 – EdmundYeung99 2013-02-26 20:17:23

回答

8

安装了msdeploy(无论在何处在文件系统中),它会将其安装路径添加到注册表处;

HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\InstallPath 

及其版本信息;

HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\Version 

...其中<version>目前是1,2或3,具体取决于您所安装的WebDeploy版本。

+2

请注意,'InstallPath'和'Version'不是子项,而是它们是''键上的值。 (重要的是,如果您正在以编程方式查看此内容。) – jpmc26 2015-03-12 21:03:51

4

取决于你认为什么是“版”上运行。通过文件夹名称“c:\ Program Files \ IIS \ Microsoft Web Deploy V3”,版本为3,但是如果运行msdeploy.exe,则版本为7.X

0

您可以使用下面的PowerShell的片段:

$installPath = $env:msdeployinstallpath 
if(!$installPath){ 
    $keysToCheck = @('hklm:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3','hklm:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2','hklm:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1') 
    foreach($keyToCheck in $keysToCheck) { 
     if(Test-Path $keyToCheck){ 
      $installPath = (Get-itemproperty $keyToCheck -Name InstallPath -ErrorAction SilentlyContinue | select -ExpandProperty InstallPath -ErrorAction SilentlyContinue) 
     } 
     if($installPath) { 
      break; 
     } 
    } 
} 

如果你把它包装成脚本块,那么你可以调用它在远程会话。

相关问题