У меня есть шаблон развертывания лазурной масштаба виртуальной машины с этим extensionProfile:Powershell скрипт не может выполнить регистровой ScheduledJob как Azure Resource Manager CustomScriptExtension
"extensionProfile": {
"extensions": [
{
"name": "customScript",
"location": "[resourceGroup().location]",
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"settings": {
"fileUris": [
"[concat(parameters('customInstallScriptLocation'), parameters('customInstallScriptFileName'))]"
]
},
"typeHandlerVersion": "1.8",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File \"', parameters('customInstallScriptFileName'), '\" -adminUsername ', parameters('adminUsername'), ' -adminPassword ', parameters('adminPassword'))]"
}
}
}
]
}
При развертывании vmss пользовательский скрипт выполняется, такие команды, как Invoke-WebRequest и Start-Process, без проблем. Но Register-ScheduledJob не работает. Когда я подключаюсь к удаленному рабочему столу и запускаю этот скрипт установки вручную, все работает правильно.
Это код, который терпит неудачу, когда не работает вручную:
$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:45
Register-ScheduledJob -Trigger $trigger -FilePath $installDir\natPuncherStartupScript.ps1 -Name NPSSOnStartup >> $log
logAndClearErrors $true
Ошибка:
Register-ScheduledJob : An error occurred while registering scheduled jobdefinition NPSSOnInstall to the Windows Task Scheduler. The Task Scheduler error is: (32,4):UserId:.
Я также попытался:
$trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:45
Register-ScheduledJob -Credential $credential -Trigger $trigger -FilePath $installDir\natPuncherStartupScript.ps1 -Name NPSSOnStartup >> $log
logAndClearErrors $true
Но теперь показывает ошибки что имя пользователя/пароль неверно. Также при запуске этого вручную с удаленного рабочего стола это работает отлично.
Что мне не хватает? Почему я не могу назначить работу из таможни?
Вы это означает, что, когда вы указываете '' -Credential' в регистровой ScheduledJob' и развернуть шаблон ARM, то вы получите сообщение об ошибке: «имя пользователя/пароль недействителен»? Как вы получили «$ credential» для Credential? –
'$ adminPasswordSecure = ConvertTo-SecureString $ adminPassword -AsPlainText -Force $ credential = New-Object System.Management.Automation.PSCredential ($ adminUsername, $ adminPasswordSecure) ' – Maarten
Я использую код из моего предыдущего комментария для создания моего объекта учетных данных, $ adminUsername и $ adminPassword передаются из customScriptExtension. – Maarten