编译包含Azure自动化中的Get-NetAdapter的DSC配置

时间:2018-05-02 19:29:00

标签: powershell azure dsc azure-automation

many Azure Quick Start examples所示,通常使用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自动化编译,则会收到以下错误:

  

无法连接到CIM服务器。指定的服务不作为已安装的服务存在。

有解决方法吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

Get-NetAdapter内部使用WMI获取在Azure自动化中无效的信息。但是,您可以使用get-netipinterface cmdlet获取有关适配器的信息。

答案 2 :(得分:0)

答案是 - 它不可能。配置是在Azure自动化服务器上​​编译的,而不是目标节点。即使我找到了在配置中获取网络适配器名称的方法,它也会在DSC拉取服务器上获得适配器的名称,而不是目标节点。

如果每个节点使用1个配置,并且您在目标节点上预编译然后将其上载到Azure自动化,则问题中的代码将起作用。