【问题标题】:Run Script on Azure RM Server在 Azure RM 服务器上运行脚本
【发布时间】:2017-02-13 12:25:37
【问题描述】:

我正在尝试在使用 Azure RM 创建的 VM 上运行 powershell 脚本。我已经编写了一个使用 Rest api 创建 VM 的 C# 程序,现在我需要在 VM 上运行一个脚本,以便正确配置它。 I found this link that shows what to send 我遇到的问题是当我尝试创建扩展时,它总是以失败的配置状态结束,并且脚本没有运行。

我认为问题在于管理程序无法下载脚本,但是我无法从管理程序收到错误消息,而且我不知道我传递给的 JSON 有什么问题管理程序。

这是我发送的用于创建自定义脚本扩展的 JSON

string body =
             "{                                                                                                                                 " +
            $"    \"type\" : \"Microsoft.Compute/virtualMachines/extensions\",                                                                  " +
            $"    \"name\" : \"{extensionName}\",                                                                                               " +
             "    \"location\" : \"eastus\",                                                                                                    " +
             "    \"tags\": {                                                                                                                   " +
            $"        \"displayName\": \"{extensionName}\"                                                                                      " +
             "      },                                                                                                                          " +
             "    \"properties\": {                                                                                                             " +
             "        \"publisher\": \"Microsoft.Azure.Extensions\",                                                                            " +
             "        \"type\": \"CustomScript\",                                                                                               " +
             "        \"typeHandlerVersion\": \"2.0\",                                                                                          " +
             "        \"autoUpgradeMinorVersion\": true,                                                                                        " +
             "        \"settings\": {                                                                                                           " +
            $"           \"fileUris\": [ \"https://{storageAccountName}.file.core.windows.net/scripts/TestScript1.ps1\",    ],                  " +             
             "        },                                                                                                                        " +
             "        \"protectedSettings\": {                                                                                                  " +
             "            \"commandToExecute\": \"PowerShell.exe -ExecutionPolicy Unrestricted -File TestScript1.ps1\",                         " +
            $"            \"storageAccountName\": \"{storageAccountName}\",                                                                     " +
            $"            \"storageAccountKey\": \"{storageAccountAccessKey}\"  " +
             "          }                                                                                                                       " +
             "      }                                                                                                                           " +
             "}                                                                                                                                 " +
             "";

这是我正在执行 PUT 的 URL

https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.Compute/virtualMachines/{serverName}/extensions/{extensionName}?api-version=2017-03-30

【问题讨论】:

    标签: c# rest azure-resource-manager


    【解决方案1】:

    我正在使用类似的技术在 Service Fabric 虚拟机规模集上安装 .net 4.6 和其他(但来自 json 模板)。

    ...
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.7",
        "autoUpgradeMinorVersion": false,
        "settings": {
            "fileUris": [
                "https://gist.githubusercontent.com/DenisPitcher/d06c6cbc64765c1eb7e8c731964f2a5e/raw/6c2b87aa3e825950ad61b368490b8862f9345856/InstallNetFx46.ps1"
            ],
            "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File InstallNetFx46.ps1"
        },
        "forceUpdateTag": "RerunExtension"
    },
    "name": "CustomScriptExtensionInstallNet46"
    ...
    

    那么,有什么区别:

    • 我使用的是 CustomScriptExtension 类型而不是您的 CustomScript
    • 我在设置下直接有一个commandToExecute

    但无论如何,您应该能够在https://resources.azure.com/看到错误。

    【讨论】:

    • 我按照您的建议进行了更改,但仍然出现同样的错误
    • 当您在resources.azure.com 找到您的资源时看到什么错误?
    • 您也可以查看 VM 上的日志 - C:\WindowsAzure\Logs\Plugins,如果您没有找到任何内容,C:\Packages\Plugins\Microsoft 中还有更多信息.Compute.CustomScriptExtension\1.7\Status 但这更多的是关于扩展而不是脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 2018-05-12
    相关资源
    最近更新 更多