我正在寻找类似Powershell脚本的东西来检查是否安装了msdeploy,是否安装了什么版本
我考虑过检查“c:\ Program Files \ IIS”并检查那里的MSDeploy安装,但这是否始终保证是安装位置?
我需要这个才能在任何给定的服务器上运行
答案 0 :(得分:11)
安装msdeploy
时(无论文件系统中的哪个位置),它都会将其安装路径添加到注册表中;
HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\InstallPath
及其版本信息;
HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\Version
...其中<version>
目前为1,2或3,具体取决于您安装的WebDeploy版本。
答案 1 :(得分:6)
取决于您认为的“版本”。通过文件夹名称“c:\ Program Files \ IIS \ Microsoft Web Deploy V3”,版本为3,但如果运行msdeploy.exe,则版本为7.X
答案 2 :(得分: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;
}
}
}
如果将其包装到脚本块中,则可以在远程会话中调用它。
答案 3 :(得分:0)
这是我在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
}
HTH