【问题标题】:Getting computername in Azure Automation DSC在 Azure 自动化 DSC 中获取计算机名
【发布时间】:2016-07-15 13:26:09
【问题描述】:

我正在尝试使用 Azure Automation Pull 服务器将 DSC 配置添加到 VM。通常您可以使用环境变量$env:COMPUTERNAME 获取当前机器的名称 - 即像这样:

xComputer JoinDomain
{ 
    Name  = $env:COMPUTERNAME
    DomainName = $ConfigurationData.NonNodeData.DomainDetails.DomainName             
    Credential    = $domainAdminCredential  
} 

但在使用 Azure 自动化时,$env:COMPUTERNAME 似乎总是返回 CLIENT 而不管当前的机器名称如何。使用 Azure 自动化时,在 DSC 配置中动态获取当前 VM 名称的最佳/最推荐方法是什么?

提前致谢。

最好的问候,

托马斯

【问题讨论】:

  • 您无需在此处指定计算机名。仅当您想在加入域时更改机器名称时才这样做。
  • Name属性为必填项,不能省略。
  • 啊,我错了!但我现在想起来如何做到这一点,所以我会添加我的答案。

标签: dsc azure-automation


【解决方案1】:

总之,DSC 配置应用如下:

  1. 在 PowerShell 中编写配置
  2. 编译配置 - 这会生成一个 mof 文件
  3. 将 mof 文件传送到执行相同操作的 LocalConfigurationManager (LCM)

指定的代码实际上是在步骤#2 中获取计算机的名称。请注意,#2 可能发生在与您要应用配置的计算机不同的计算机上。在这种情况下,它恰好是 AA 服务端的那个。

很遗憾,目前无法获取执行配置的计算机的名称,除非您选择使用脚本资源。因此,总而言之,您可以通过配置数据指定计算机名称,也可以使用脚本资源进行域加入

【讨论】:

    【解决方案2】:

    为了支持@NanaLakshaman 的回答,让我们参数化这个配置。

    为了便于理解,我假设您只是在配置计算机名和域加入。

    configuration DomainJoin
    {
     param
    (
        [string[]]$NodeName ='localhost',
        [string]$DomainName,  
        [string]$credential
    ) 
    
    #Import the required DSC Resources
    Import-DscResource -Module xComputer
    
    Node $NodeName
    { #ConfigurationBlock 
    
    
        xComputer JoinDomain
            {
                Name       = $nodename
                DomainName = $DomainName             
                Credential = $Credential  
    
            }
        }
    }
    

    现在,通过按 F5 或运行脚本(在 Azure 自动化中,您将运行脚本)将其编译到内存中。然后,像调用函数一样调用配置以生成新的所需状态配置。 您可以在此处指定本地计算机名称

    DomainJoin -NodeName $env:ComputerName -DomainName SomeDomain -Credential (Get-Cred)
    

    这将创建一个新的configuration.mof 文件,然后您可以使用:

    Start-DscConfiguration -ComputerName localhost -Wait -Force -Verbose 
    

    【讨论】:

      【解决方案3】:

      另一个选项是在配置数据中提供计算机名称。

      此处是 Azure 自动化中如何提供配置数据的示例,以及如何在资源中使用 NodeName 的示例:

      https://azure.microsoft.com/en-us/documentation/articles/automation-dsc-compile/

      另外,您提到的特定用途不应要求提供名称。我在这里提出了一个问题: https://github.com/PowerShell/xComputerManagement/issues/29

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 1970-01-01
        • 2018-10-25
        • 2021-02-04
        • 1970-01-01
        • 2016-06-12
        • 2018-10-13
        • 1970-01-01
        相关资源
        最近更新 更多