2013-09-11 2 views
3

Я хочу получить каталоги установки всех версий Visual Studio, установленных на машине (для копирования файла в каталог Xml/Schemas)В PowerShell, как мне получить все ключи реестра с определенным свойством?

Лучший способ - прочитать из реестра. В \HKLM\Software\Wow6432Node\Microsoft\Visual Studio все версии указаны по номеру версии: 10.0, 11.0, 12.0. Тем не менее, 9.0 и 8.0 и 7.1 все еще существуют, хотя они не установлены. Поэтому я не могу просто схватить их всех. Мне нужно фильтровать все ключи, у которых есть свойство InstallDir.

Я знаю, что мне нужно комбинировать Get-ChildItem и Get-ItemProperty, но я не уверен, как это сделать.

Как написать команду Powershell для того, что я прошу?

ответ

6

Это приведет к возникновению ошибок в ключах, которые не имеют свойства, но вы можете смело игнорировать их.

cd HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio 
$paths = dir | gp -Name InstallDir | select InstallDir 

Глядя на выходе переменной $ трактов на моем компьютере, где у меня есть студия 2010 и 2012 установлены:

InstallDir 
---------- 
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ 
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ 

Волшебство, что Get-ItemProperty (зм) будет принимать параметр по умолчанию из чтобы вы могли связать вывод с Get-ChildItem (dir), чтобы автоматически проверять каждый из под-клавиш. Командлет Select-Object (выберите) просто исключает свойства PS * и дает вам только исходный путь:

+2

Отлично! Я проверил, могу ли я сделать это все в одной строке, а не 'cd' в ключ, чтобы запустить его. И я могу! благодаря – ageektrapped