2013-02-26 88 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; 
     } 
    } 
} 

如果你把它包裝成腳本塊,那麼你可以調用它在遠程會話。

相關問題