Как узнать, какая версия webdeploy / msdeploy в настоящее время установлена?

Я ищу что-то вроде сценария Powershell, чтобы проверить, установлен ли msdeploy, и если да, то какая версия

Я думал проверить "c:Program FilesIIS" и проверка установки MSDeploy там, но всегда ли это гарантируется местом установки?

Мне нужно, чтобы это работало на любом сервере

3 ответов


, когда msdeploy установлен (независимо от того, где в файловой системе), он добавит свой путь установки в реестр по адресу;

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

и информацию о его версии;

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

...где <version> В настоящее время 1, 2 или 3 в зависимости от установленной версии WebDeploy.


зависит от того, что вы считаете "версия". По имени папки "c:\Program Files\IIS\Microsoft Web Deploy V3", версия 3, но при запуске msdeploy.exe, версия 7.X


можно использовать следующий фрагмент PowerShell:

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

Если вы обернете его в блок сценария, то вы можете вызвать его в удаленном сеансе.