使用azurerm\u虚拟机\u扩展时未执行PowerShell脚本

使用azurerm\u虚拟机\u扩展时未执行PowerShell脚本,azure,terraform,terraform-provider-azure,Azure,Terraform,Terraform Provider Azure,我尝试在terraform执行中使用以下内容: resource "azurerm_virtual_machine_extension" "vmex" { name = "myVM" location = "eastus" resource_group_name = "${azurerm_resource_group.rg.name}" virtual_machine_name = "${azurerm_virtual_machine.vm.name}"

我尝试在terraform执行中使用以下内容:

resource "azurerm_virtual_machine_extension" "vmex" {
    name = "myVM"
    location = "eastus"
    resource_group_name   = "${azurerm_resource_group.rg.name}"
    virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
    publisher = "Microsoft.Compute"
    type = "CustomScriptExtension"
    type_handler_version = "1.9"
    settings = <<SETTINGS
    {
        "fileUris": [
            "https://example.com/scripts/test.ps1"
        ],
        "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File 'test.ps1'"
    }
    SETTINGS
}
resource“azurerm\u虚拟机\u扩展”“vmex”{
name=“myVM”
location=“eastus”
resource_group_name=“${azurerm_resource_group.rg.name}”
virtual_machine_name=“${azurerm_virtual_machine.vm.name}”
publisher=“Microsoft.Compute”
type=“CustomScriptExtension”
键入\u handler\u version=“1.9”

settings=我有这样的问题,在我的例子中是与脚本和参数的内容有关的。但是,因为它可能是许多其他的东西,您需要检索一些额外的数据

尝试了解扩展本身中是否有更多信息。转到您的Azure帐户并按照以下路径操作:主页>虚拟机>[您的虚拟机]。在显示所有选项的刀片服务器中,选择扩展以查看您的扩展及其状态(应为“设置失败”)。单击该扩展。您将看到有关它的一些信息。请检查状态和详细状态

详细状态是一个链接,它将向您显示一个JSON,其中可能包含有关正在发生的事情的重要信息。它可能包含PS1脚本的错误输出

让我知道,如果这有帮助,如果这些信息是不够的,请张贴在这里,这样我可以有更多的信息,我将能够检查并尝试帮助

问候,, 劳尔


编辑:因此,在检查代码示例之间的差异后,单引号最终导致了您的问题。很高兴您发现了问题。

您应该连接到VM(通过RDP、Powershell remote或其他方式)并查看日志的
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
文件夹


我假设您已经拥有了内容。

根本原因在于
命令执行
您不能使用单引号。您可以删除单引号或使用双引号(但您需要使用
\
)。如下所示:

"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File \"test.ps1\""

我已按照您的建议执行了操作,错误消息如下:
“消息”:“处理-文件”“test.ps1”“失败,因为该文件没有“.ps1”扩展名。请指定有效的Windows PowerShell脚本文件名,然后重试。”
有什么想法吗?谢谢我发现与我的工作代码示例的唯一区别是:(1) 使用整个可执行文件名“powershell.exe”(2)没有单引号的文件名(3)我仍在使用type_handler_版本1.8.(1)和(2)应该没有问题。请尝试使用(3)好的,谢谢,我会一个接一个地排除这些。劳尔,如果我从文件名中删除单引号,看起来一切都会好起来。真的不知道为什么会有不同,因为文档建议应该使用单引号,但是…如果你想将这些信息添加到你的答案中,我会标记为已接受。再次感谢!谢谢ks,我根据Raul的答案找到了日志,但是,这并没有说明问题。你有什么想法吗?谢谢!我有一些工作示例,但不是在这台电脑上;我可以明天查看自定义脚本日志,似乎Azure代理执行命令
'powershell-ExecutionPolicy Unrestricted-NoProfile-NonInteractive-File“helloworld.ps1”
,您无法再次使用单引号。此外,这不是terraform问题。如果您使用Azure arm模板,您将得到相同的错误日志。同意。我已向此处发送了一份PR:更正文档中显示的示例。我将向Azure提供反馈,这有此问题。
“commandToExecute”:“powershell.exe…-文件”“/scripts/myscript.ps1”“
这是错误的。我同意,此文档是错误的,这是我为更正该文档而发送的PR。