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