将adminPassword参数从JSON模板传递到PS脚本切换

时间:2019-03-13 14:30:46

标签: json azure powershell active-directory safe-mode

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

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"

我想将adminPassword参数从JSON模板传递到PS脚本,以便它将其用于-SafeModeAdministratorPassword开关。 有可能吗?

我阅读了ConvertFrom-Json并检查了以下内容:1 2,但是我不确定如何最终实现该目标...

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

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

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

0 个答案:

没有答案