Проблемы с разбором xml с помощью powershell

Глядя на пример xml ниже, когда вы загружаете его в powershell, он не позволяет вам указывать источник за пределами $myXML.configuration.system.web и, следовательно, не разрешает доступ к внутренностям этого элемента. Это из-за точки в имени элемента? Я не могу изменить это, если это так, так что же будет обходным путем?

Я могу ввести (например) тип $myXML.configuration.'system.web', но я не могу продолжить дальше по тегам/элементам, если только это не ожидается, и впоследствии я делаю что-то не так (отсюда и вопрос). Я не могу использовать сборки внутри компиляции или даже компиляции внутри system.web

Моя конечная цель - иметь возможность проверить наличие любого элемента/значения, а затем добавить его, если он не существует, или изменить его, если он установлен неправильно.

$path = "c:\temp\web2.config";
[xml]$myXML = Get-Content $path;

Ниже приведено содержимое xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <appSettings>
    <add key="HttpProxy.ProtocolType" value="Eas" />
    <add key="OAuthHttpModule.Profiles" value="V1AppActAs" />
    <add key="OAuthHttpModule.V1AppScopes" value="EAS.AccessAsUser.All" />
  </appSettings>
  <system.webServer>
    <modules>
      <remove name="ServiceModel" />
      <remove name="ServiceModel-4.0" />
      <add name="HostHeaderValidationModule" type="Microsoft.Exchange.HttpUtilities.HostHeaderValidationModule, Microsoft.Exchange.HttpUtilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=xxxxx" />
      <add name="CasHealthModule" type="Microsoft.Exchange.Common.ExWebHealthModule,Microsoft.Exchange.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=xxxxx" />
      <add name="HttpProxy" type="Microsoft.Exchange.HttpProxy.ProxyModule,Microsoft.Exchange.FrontEndHttpProxy,Version=15.0.0.0,Culture=neutral,PublicKeyToken=xxxxx" preCondition="" />
      <add name="OAuthAuthModule" type="Microsoft.Exchange.Security.OAuth.OAuthHttpModule" />
    </modules>
    <httpErrors existingResponse="PassThrough" />
    <httpRedirect enabled="false" />
    <httpProtocol>
      <customHeaders>
        <add name="X-FEServer" value="xxxxx" />
      </customHeaders>
      <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="250000" />
        </requestFiltering>
    </security>
    </httpProtocol>
  </system.webServer>
  <system.web>
    <machineKey validationKey="AutoGenerate,IsolateApps" />
    <compilation defaultLanguage="c#" debug="false">
      <assemblies>
        <add assembly="Microsoft.Exchange.Clients.Strings, Version=15.0.0.0, Culture=neutral, publicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.Data.Directory, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.Clients.Common, Version=15.0.0.0,Culture=neutral, publicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.Clients.Security, Version=15.0.0.0, Culture=neutral, publicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.Security, Version=15.0.0.0, Culture=neutral, publicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.FrontEndHttpProxy, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add assembly="Microsoft.Exchange.HttpProxy.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </assemblies>
    </compilation>
    <httpRuntime maxRequestLength="10240" />
  </system.web>
</configuration>

person Bbb    schedule 04.01.2019    source источник
comment
поскольку в свойствах есть точка, вы пытались использовать $myXML.configuration.'system.web'.machineKey?   -  person Lee_Dailey    schedule 04.01.2019
comment
когда я загружаю ваш XML, я могу использовать код, который я разместил, чтобы углубиться в объект. это ... $myXML.configuration.'system.web'.compilation.assemblies.add[0].assembly ... дает мне Microsoft.Exchange.Clients.Strings, Version=15.0.0.0, Culture=neutral, publicKeyToken=31bf3856ad364e35.   -  person Lee_Dailey    schedule 04.01.2019
comment
Чтобы ответить на мой собственный вопрос, вы не можете получить из него точечный источник, вам нужно ввести его вручную, и он вернет значение, используя формат, подобный Ли Дейли, он не будет точечным источником с intellisense.   -  person Bbb    schedule 04.01.2019
comment
Вы имеете в виду точечный доступ. Дот-сорсинг — это нечто совершенно другое.   -  person Ansgar Wiechers    schedule 04.01.2019