我正在尝试通过Azure自动化运行簿中的set-azuremrmvmcustomscriptextension扩展来执行DSC脚本。
我不想使用Azure自动化的DSC,因为我的运行簿中还有其他操作需要执行(非DSC),而且我不想使用set-azurermvmdsc扩展名,因为我的文件不是位于Blob存储中,而是通过set-azurermvmcustomscript扩展名提供的fileURI开关访问的。
当我通过set-azurermvmcustomscript扩展名运行一个DSC文件(.ps1)时,我不会得到任何错误,并且它会生成本地.mof。然而,它实际上并没有在配置括号中执行任何东西,也就是需要运行的DSC PowerShell代码。
.ps1有应用配置的DSC命令。如果我通过PowerShell ISE远程访问服务器时运行脚本,那么只有当我从set-azurermvmcustomscript扩展名调用它时,它才不会执行配置(但仍然创建mof)。
是否存在权限问题?DSC运行在系统级别,我相信,它没有问题,产生mof/无错误,在导入模块等。这就像它只是忽略了配置。
更新1
经过更多的测试后,我们发现当我们在Set-AzureRMVMCustomScriptExtension中使用-Argument时,它无法运行DSC配置。移除它允许DSC配置运行..。但是,我们需要从Runbook/Set传递正确的参数-AzureRMVMCustomScriptExtension,以便使其具有正确的值。
这里是我们计算出Args的地方:How can I pass multiple arguments to Set-AzureRmVMCustomScriptExtension?
发布于 2017-02-22 17:30:24
经过多次尝试并将问题隔离开来,即我如何通过-Argument开关传递参数,我发现其中一个参数中有空格,因此我试图按如下方式调用参数,它将单个参数视为多个,并且没有按照预期将其传递到脚本中,因为-Argument是空格分隔的。注意:值的Azure Automation:
Input for Value 1: myvalue1
Input for Value 2: my value 2
[parameter(Mandatory=$true)][String] $value1,
[parameter(Mandatory=$true)][String] $value2
-Argument "$value1 value2"
# Value 1 seen as myvalue1, while Value 2 seen as three separate values of "my" "value" "2" since -Argument is space delimited.更改此操作以避免使用$value2参数,将问题解决如下:
Input for Value 1: myvalue1
Input for Value 2: my value 2
[parameter(Mandatory=$true)][String] $value1,
[parameter(Mandatory=$true)][String] $value2
-Argument "$value1 `"value2`""
# Value 1 seen as myvalue1, while Value 2 seen as "my value 2"https://stackoverflow.com/questions/42355827
复制相似问题