gpt4 book ai didi

powershell - 如何获取 Azure DSC 配置来读取名称为参数的自动化帐户变量?

转载 作者:行者123 更新时间:2023-12-03 02:59:38 25 4
gpt4 key购买 nike

我正在尝试使用模板和 DSC 在 Azure 中自动构建 Windows VM。我的同事熟悉模板,但不熟悉 PowerShell,我希望尽可能少地与 DSC 交互或运行 cmdlet。如果我无法使用模板完成所有操作,我想使用 Azure 门户。

我正在努力寻找一种非 PowerShell 方式将用户和组添加到本地管理员组。我认为最简单的过程是:

  1. 该模板有一个名为 membersOfLocalAdmins 的参数。它的值将是一个字符串,如 mydomain\username,mydomain\groupname...

  2. 该模板在自动化帐户中创建一个名为 membersOfLocalAdmins-*New VM Name* 的变量。它的值为admins的字符串。

  3. DSC 配置需要读取此变量。它当前有一个用于 VM 名称的参数。在 Azure 门户中,我们将转到自动化帐户,选择配置并单击编译。我们会看到输入虚拟机名称的提示,然后输入该名称,然后单击“确定”。

DSC 配置必须读取名为 membersOfLocalAdmins-*New VM Name* 的自动化帐户变量。然后将变量的值拆分到一个数组中,并将其获取到其组资源。我已经尝试过类似下面的代码,但它无法编译,我认为配置中唯一可以使用 PowerShell 的地方是脚本资源中。有什么办法可以做到这一点,或者有更好的办法吗?

我还遇到了 Azure 门户中的编译 DSC 配置表单无法接受数组的问题。它读取mydomain\username,mydomain\groupname...作为单个字符串。如果我可以在它到达组资源之前使用 PowerShell 将其拆分,那就可以了。但是我应该把这个 PowerShell 放在配置中的什么位置呢?

我想我将不得不使用脚本资源,将字符串拆分为数组并自己将其添加到管理员中。凌乱。

$DomainUserName = Get-AutomationVariable -Name 'Internal_Domain_Username'
$DomainUserPassword = Get-AutomationVariable -Name 'Internal_Domain_Password'
$DomainCredential = New-Object -TypeName System.Management.Automation.PSCredential($DomainUserName, (ConvertTo-SecureString $DomainUserPassword -AsPlainText -Force))

Configuration TestConfiguration1Win10 {
param(
[string[]]$ComputerName = "localhost"
,
[string[]]$membersOfLocalAdmins
)

# This if statement here causes the compile to fail. Is there anywhere else in the configuration I could put it?
if (!$membersOfLocalAdmins){
$membersOfLocalAdmins = $(Get-AutomationVariable -Name "membersOfLocalAdmins-@($ComputerName)[0]").Split(',')
}

Import-DscResource –ModuleName 'PSDesiredStateConfiguration'
Import-DSCResource -Module xNetworking -Name xFirewallProfile
Import-DSCResource -Module xSystemSecurity -Name xIEEsc
Import-DscResource -ModuleName DeleteDscTmpFile

Node $ComputerName {
Group AddToLocalAdmins {
GroupName ='Administrators'
Ensure = 'Present'
MembersToInclude = $membersOfLocalAdmins
Credential = $DomainCredential
}

最佳答案

删除 $membersOfLocalAdmins 参数并更改组资源如下所示。

     Group AddToLocalAdmins {
GroupName ='Administrators'
Ensure = 'Present'
MembersToInclude = $((Get-AutomationVariable -Name "membersOfLocalAdmins-$ComputerName").Split(',').Trim())
Credential = $DomainCredential
}

关于powershell - 如何获取 Azure DSC 配置来读取名称为参数的自动化帐户变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50354394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com