我使用Azure的VM的Javascript SDK在我的Node.js的Web应用程序。 我试图使用RunCommand功能对我的Azure的虚拟机上运行自定义脚本。
我遇到的问题是与获得运行应包含输出和错误字符串命令的响应。
如果我运行在Azure的CLI命令,如下所示:
az vm run-command invoke -g 'myResource' -n 'myVm' --command-id RunPowerShellScript --scripts 'Get-ChildItem -Name'
然后,我能够接收响应,例如(在“信息”部分公告不存在的文件的列表,从“GET-ChildItem”返回)
{
"value": [
{
"code": "ComponentStatus/StdOut/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "myTxtFile.txt\nscript12.ps1\nscript13.ps1\nscript14.ps1\nscript15.ps1\nscript16.ps1\nscript17.ps1\nscript18.ps1\nscript19.ps1\nscript20.ps1\nscript21.ps1\nscript22.ps1\nscript23.ps1\nscript24.ps1\nscript25.ps1\nscript26.ps1",
"time": null
},
{
"code": "ComponentStatus/StdErr/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": "",
"time": null
}
]
}
然而,当我与JavaScript SDK运行这段代码我没有得到返回的任何东西。 下面是代码:
let usr = ...;
let pas = ...;
let subscriptionId = ...;
let client = null;
msRestAzure.loginWithUsernamePassword(usr, pas, function(err, credentials) {
if (err) return console.log(err);
client = new azureArmCompute.ComputeManagementClient(credentials, subscriptionId);
let param = {
commandId: 'RunPowerShellScript',
script: [
'echo $null >> myTxtFile.txt\n' +
'Get-ChildItem -Name\n'
]
};
client.virtualMachines.runCommand('myResource', 'myVm', param, function (err, result) {
console.log(err);
console.log(result);
})
});
这里是什么是打印到控制台:
null
{}
我知道脚本实际运行,因为我试过了,是能够成功,创建一个文本文件(myTxtFile.txt)。
任何人有任何线索,为什么我没有在结果对象中获取什么?
编辑1(响应于@Itay):
望着源,回调应该是一种“RunCommandResult”的“ServiceCallback”。 下面是RunCommand三个函数声明。
下面是该ServiceCallback接口的声明。
所以在我的回调,我期待在那里有四个回报“犯错”和“结果”和“请求”和“响应”(我明明离开关后两者)。 在我的例子,我打印的错误和结果对象到控制台,但结果对象没有了什么东西?