Как вы можете использовать PowerShell.(точка) обозначение, чтобы пройти через элементы с точками в имени элемента? - PullRequest
27 голосов
/ 30 июня 2011

PowerShell значительно упрощает работу с XML в большинстве случаев. Однако у меня возникают проблемы с использованием "точечной" записи для просмотра файла web.config. Все работает

Import-Module WebAdministration
$site = get-website | ? { $_.name -eq "My Website - 80" }
$WebConfigFile = $site.physicalPath + "\web.config"
[xml]$WebAppXml = Get-Content $WebConfigFile
$webAppXml.configuration.system.web

В последней строке PowerShell использует intellisense для заполнения system.web, но если вы попытаетесь запустить его, вывод будет нулевым. Я знаю, что могу использовать объекты Xpath или .NET Xml, но я бы предпочел этого не делать, если мне это не нужно.

Ответы [ 3 ]

49 голосов
/ 30 июня 2011
$webAppXml.configuration.'system.web'
5 голосов
/ 30 июня 2011

Это тоже работает:

, например

$webAppXml.configuration.["system.web"].Identity
2 голосов
/ 30 июня 2011

В качестве альтернативы вы можете использовать переменные:

$subproperty = 'System.Web'
$webAppXml.configuration.$subproperty

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

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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...