3

我正在构建一个 JSON 模板,用于在 Azure 中部署 VM 并通过自定义脚本扩展 (CSE) 执行 PowerShell 脚本。JSON 模板取自这里,并根据我的公司需要进行了一些修改。

JSON 模板中的参数之一是adminPassword,它为 VM 的本地管理员帐户配置密码。

PowerShell 脚本应在 VM 上部署域控制器。这是 PS 脚本的重要部分:

Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath C:\Windows\NTDS -DomainMode 7 -DomainName Domain.local -DomainNetbiosName Domain -ForestMode 7 -InstallDns:$true -LogPath C:\Windows\NTDS -SysvolPath C:\Windows\SYSVOL -NoRebootOnCompletion:$false -Force:$true

Install-ADDSForest命令需要开关-SafeModeAdministratorPassword才能运行该命令。在 PS 脚本的开头添加纯文本密码是可行的,但纯文本密码不是一个选项。这就是我测试的方式:

$SafePassPlain = 'Password'
$SafePass = ConvertTo-SecureString -string $SafePassPlain `
    -AsPlainText -force

并在该Install-ADDSForest行中输入:-SafeModeAdministratorPassword $SafePass

这是脚本运行的 JSON 模板中的部分:

      "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.4",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "fileUris": [
            "https://URLtoFile/DC-Domain.ps1
          ],
          "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File DC-Domain.ps1"

我想将 JSON 模板中的 adminPassword 参数传递给 PS 脚本,以便它将用于-SafeModeAdministratorPassword切换。可能吗?

我阅读ConvertFrom-Json并检查了这些:1 2,但我不确定如何最终实现它......

在检查了 thisthis之后,看到了将参数从 JSON 模板传递到 PS 脚本的示例,我尝试像这样实现它,但没有成功:

"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File DC-Domain1.ps1 -SafeModeAdministratorPassword ',parameters('adminPassword'))]"

任何帮助将不胜感激...

4

0 回答 0