Компиляция конфигурации 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 для получения информации об адаптере.