我正在寻找像Powershell脚本来检查msdeploy是否安装,如果是,什么版本如何找出当前安装的webdeploy/msdeploy版本?
我已经考虑检查“c:\ Program Files \ IIS”并检查MSDeploy安装那里,但是这总是保证是安装位置?
我需要这个任何给定的服务器计算机
我正在寻找像Powershell脚本来检查msdeploy是否安装,如果是,什么版本如何找出当前安装的webdeploy/msdeploy版本?
我已经考虑检查“c:\ Program Files \ IIS”并检查MSDeploy安装那里,但是这总是保证是安装位置?
我需要这个任何给定的服务器计算机
安装了msdeploy
(无论在何处在文件系统中),它会将其安装路径添加到注册表处;
HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\InstallPath
及其版本信息;
HKLM\Software\Microsoft\IIS Extensions\MSDeploy\<version>\Version
...其中<version>
目前是1,2或3,具体取决于您所安装的WebDeploy版本。
请注意,'InstallPath'和'Version'不是子项,而是它们是'
取决于你认为什么是“版”上运行。通过文件夹名称“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\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;
}
}
}
如果你把它包装成脚本块,那么你可以调用它在远程会话。
'msdeploy |找到“版本”? – 2013-02-26 19:54:17
@JoachimIsaksson这只会在PATH变量中设置时才起作用 – EdmundYeung99 2013-02-26 20:17:23