我正在构建一个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,但是我不确定如何最终实现该目标...
在检查this和this之后,看到了将参数从JSON模板传递到PS脚本的示例,我尝试像这样实现它,但没有用:
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File DC-Domain1.ps1 -SafeModeAdministratorPassword ',parameters('adminPassword'))]"
任何帮助将不胜感激...