2013-02-26 132 views
7

मैं अगर msdeploy स्थापित किया गया है की जाँच करने के एक PowerShell स्क्रिप्ट की तरह कुछ के लिए देख रहा हूँ और अगर ऐसा है, कौन-सा संस्करणयह पता लगाने के लिए कि वर्तमान में webdeploy/msdeploy का कौन सा संस्करण स्थापित है?

मैं जाँच पर विचार किया है "c: \ Program Files \ आईआईएस" और वहाँ MSDeploy प्रतिष्ठानों के लिए जाँच, लेकिन क्या यह हमेशा स्थापित स्थान होने की गारंटी है?

मैं इस की जरूरत है किसी भी सर्वर मशीन

+0

'msdeploy | "संस्करण" ढूंढें? –

+0

@ जोचिम इक्सक्सन यह केवल तभी काम करेगा जब इसे पैथ चर – EdmundYeung99

उत्तर

8

जब msdeploy स्थापित है (चाहे कोई फर्क नहीं पड़ता फ़ाइल सिस्टम में), यह रजिस्ट्री में अपना इंस्टॉल पथ जोड़ देगा;

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

और इसकी संस्करण जानकारी;

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

... जहां <version> वर्तमान में 1, 2 या 3 WebDeploy संस्करण आप स्थापित किया है पर निर्भर करता है है।

+2

में स्थापित किया गया है नोट करें कि 'इंस्टॉलपाथ' और 'संस्करण' उपकुंजी नहीं हैं, बल्कि वे '' कुंजी पर मान हैं। (महत्वपूर्ण यदि आप इस प्रोग्रामेटिक रूप से देख रहे हैं।) – jpmc26

4

तुम क्या "संस्करण" पर विचार पर निर्भर करता है पर काम करने की। फ़ोल्डर नाम "c: \ प्रोग्राम फ़ाइलें \ IIS \ Microsoft वेब परिनियोजन 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; 
     } 
    } 
} 

आप स्क्रिप्ट ब्लॉक में लपेट तो आप दूरस्थ सत्र में यह कह सकते हैं।