Компиляция конфигурации DSC, содержащей Get-NetAdapter в Azure Automation

Как видно из множества примеров быстрого запуска Azure, обычно используется Get-NetAdapter чтобы получить имя сетевого интерфейса для таких вещей, как настройка DNS. Это пример:

configuration MyConfig
{

    $Interface=Get-NetAdapter|Where Name -Like "Ethernet*"|Select-Object -First 1
    $InterfaceAlias=$($Interface.Name)

    Node localhost
    {
        xDnsServerAddress DnsServerAddress
        {
            Address        = $DNSServer
            InterfaceAlias = $InterfaceAlias
            AddressFamily  = 'IPv4'
        }
   }
}

Если команда Get-NetAdapter находится в моей конфигурации, и конфигурация скомпилирована Azure Automation, я получаю следующую ошибку:

Не удается подключиться к серверу CIM. Указанная служба не существует в качестве установленной службы.

Есть ли обходной путь?

3 ответа

Решение

Ответ - это невозможно. Конфиги скомпилированы на сервере автоматизации Azure, а не на целевом узле. Даже если бы я нашел способ получить имя сетевого адаптера в конфигурации, он получил бы имя адаптера на сервере извлечения DSC, а не целевой узел.

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

Попробуй это:

    xDnsServerAddress DnsServerAddress
    {
        Address        = $DNSServer
        InterfaceAlias = (Get-NetAdapter | ? name -Like "Ethernet*" | select -First 1).Name
        AddressFamily  = 'IPv4'
    }

Get-NetAdapter внутренне использует WMI для получения информации, которая не работает в Azure Automation. Однако вы можете использовать командлет get-netipinterface для получения информации об адаптере.

Другие вопросы по тегам