2017-02-20 32 views
0

我正尝试通过Azure自动化Runbook中的set-azuremrmvmcustomscriptextension执行DSC脚本。使用set-azuremrmvmcustomscriptextension执行DSC文件

我不想使用Azure自动化的DSC,因为我需要执行的操作簿中有其他操作(非DSC),而且我不想使用set-azurermvmdscextension,因为我的文件不在Blob中存储,但可通过set-azurermvmcustomscriptextension提供的fileURI开关访问。

当我通过set-azurermvmcustomscriptextension运行DSC文件(.ps1)时,我没有收到任何错误,并生成本地.mof文件。但是,它并不实际执行配置括号内的任何内容,即需要运行的DSC PowerShell代码。

.ps1有DSC命令来应用配置。如果我在通过运行PowerShell ISE的远程服务器上运行脚本时,只有当我从set-azurermvmcustomscriptextension调用该脚本时,脚本才会执行配置(但仍会创建mof)。

是否存在权限问题?我相信DSC在系统级运行,并且在导入模块时没有产生mof/no错误的问题,等等。它就像忽略了配置。

更新1

更多的测试之后,我们发现,当我们在设置 - AzureRMVMCustomScriptExtension使用-Argument,它无法运行DSC配置。删除它可以让DSC配置运行...但是,我们需要从Runbook/Set-AzureRMVMCustomScriptExtension中传递正确的参数,以便它具有正确的值。

这里我们想出参数数量:How can I pass multiple arguments to Set-AzureRmVMCustomScriptExtension?

+0

好,你执行了吗?你知道你必须应用配置,不仅创建一个mof文件? – 4c74356b41

+0

是的。 .ps1有DSC命令来执行它。如果我通过PowerShell ISE远程运行脚本时运行脚本,它将运行,只有当我通过set-azurermvmcustomscriptextension调用该脚本时,它不会执行配置(但仍然创建mof) – Kode

+0

,那么将一些错误日志记录添加到您的脚本? – 4c74356b41

回答

0

多次尝试后,孤立的问题是我如何通过-Argument开关传递参数,我发现我的论点有一个在它的空间,所以我试图调用参数如下,它看到单个参数为多个,并没有按预期将它传递到我的脚本中,因为-Argument是空格分隔的。注:Azure的自动化运行手册提示输入值:

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. 

改变这种逃避$值2参数固定的问题如下:

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"