Powershell 脚本无法将 Register-ScheduledJob 作为 Azure 资源管理器 CustomScriptExtension 执行

标签 powershell azure azure-resource-manager

我有一个用于 Azure 虚拟机规模的部署模板,具有以下扩展配置文件:

"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

但现在错误显示用户名/密码无效。此外,当从远程桌面手动运行它时,效果很好。

我错过了什么?为什么我无法通过自定义脚本扩展安排作业?

最佳答案

如果您想让 vmextension 注册它,您需要以 LocalSystem 帐户登录。

Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -RunLevel Highest -User "System" -Settings $settings

Stackoverflow link of this issue I had

关于Powershell 脚本无法将 Register-ScheduledJob 作为 Azure 资源管理器 CustomScriptExtension 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281482/

相关文章:

azure - 如何从Azure存储表中的每个分区获取顶行

powershell - 适用于 ARM 的 Azure DSC 扩展,powershell 脚本不会更新

azure - 我可以将 MSDeploy 参数传递给 Azure Web App MSDeploy 扩展吗?

powershell - 以递归方式复制不包含子目录及其内容的目录

powershell - 导入模块组装错误

python - PyWinrm 持久 PowerShell session

sql-server - SQL Azure KeepAlive 问题

powershell - Get-Member不在(Start-Job)对象上显示Count成员吗?

c# - 在 Azure Function 2.x 中使用 C# 对 HTTP 请求的函数参数进行模型绑定(bind)

python - Azure 访问 token 请求返回 HTML