17

我正在寻找类似 Powershell 脚本的东西来检查是否安装了 msdeploy,如果是,是什么版本

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

我需要这个在任何给定的服务器机器上工作

4

4 回答 4

17

安装时msdeploy(无论在文件系统中的哪个位置),都会将其安装路径添加到注册表中;

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

及其版本信息;

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

...<version>根据您安装的 WebDeploy 版本,当前为 1、2 或 3。

于 2013-02-26T20:34:10.683 回答
7

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

于 2013-02-26T20:25:37.003 回答
3

这就是我在 PowerShell 脚本中所做的:

$WebDeployInstalled = Get-WmiObject Win32_Product | ? {$_.Name -like '*Microsoft Web Deploy*'}
if ($WebDeployInstalled -eq $null)
{
    $msg = "Microsoft Web Deploy is not found on this machine."
    Write-host -BackgroundColor Red -ForegroundColor White $msg
    return
}
else
{
    $MSDeployPath = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\*" | Select-Object InstallPath
    $MSDeployPath = $MSDeployPath.InstallPath
}

高温高压

于 2018-10-10T15:09:30.880 回答
1

您可以使用以下 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;
        }
    }
}

如果将其包装到脚本块中,则可以在远程会话中调用它。

于 2017-04-11T23:58:04.743 回答