首页 > 解决方案 > 从 PowerShell 脚本执行 Nodejs 脚本

问题描述

我正在尝试从 PowerShell 脚本执行 nodejs 脚本。我将几个参数传递给传递给 nodejs 的 Powershell。

在将它们传递给 nodejs 之前,我将它们绑定到 JSON 对象中。它在大多数情况下都可以正常工作,但以下情况除外:如果 Powershell 中的参数输入之一在两个单词之间有空格。例如

$requestBody='{"name":"Kiran","Place":"San Diego"}'
//Here I have space in "San Diego" if I pass "SanDiego" it worked.

PowerShell 代码

$Header = '{"xyz-qer-01":"Tew23343"}'

$endPoint="https://r0zvc2xdx7.execute-api.us-west-2.amazonaws.com"
$accessKey="<>"
$screteKey="<>"
$method='GET'
$requestBody='{"name":"Kiran","Place":"SanDiego"}'
$pathTemplate='/dev/network-provisioning/api/v1/subnets'
$additionalParam='{"header":{"xyz-qer-01":"Tew23343"}}'

$Filename = AWSSigner.js;

$Param = @{"endPoint"=$endPoint;"accessKey"=$accessKey;"screteKey"=$screteKey;"method"=$method;"requestBody"=$requestBody | ConvertFrom-Json;"pathTemplate"=$pathTemplate;"additionalParam"=$additionalParam | ConvertFrom-Json} | ConvertTo-Json -Compress

$Param2 = $Param | ConvertTo-Json -Compress
Write-Output = $Param2


 $Result = C:\Users\kp250041\Desktop\Myfiles\node C:\Users\kp250041\Desktop\Myfiles\AWSSigner.js $Param2
 Write-Output $Result

节点 JS 代码

let awsbody = process.argv[2].split('\\').join(' ') || '{}';
console.log(awsbody);
var obj = JSON.parse(awsbody);

console.log("Main Request:" + "\n");
console.log(obj);

console.log("\n" + "obj.endPoint      - " + obj.endPoint);
console.log("obj.awsAccessKey         - " + obj.accessKey);
console.log("obj.awsSecreteKey        - " + obj.screteKey);
console.log("obj.awsPathTemplate      - " + obj.pathTemplate);
console.log("obj.method               - " + obj.method);
console.log(obj.additionalParam);
console.log(obj.requestBody);

这是错误

 C:\Users\kp250041\Desktop\Myfiles\node : undefined:1
 At line:21 char:11
 + $Result = C:\Users\kp250041\Desktop\Myfiles\node C:\Users\kp250041\De ...
 +           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo          : NotSpecified: (undefined:1:String) [], 
  RemoteException
  + FullyQualifiedErrorId : NativeCommandError

  {"method":"GET","pathTemplate":"/dev/network- provisioning/api/v1/subnets","accessKey":"AKIAJ4Y5DGRDNBQ2HBYA","additionalParam":{"header":{"xyz-qer-01":"Tew


 SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at Object.<anonymous> 
(C:\Users\kp250041\Desktop\Myfiles\AWSSigner.js:18:16)
at Module._compile (internal/modules/cjs/loader.js:688:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
at startup (internal/bootstrap/node.js:285:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)

标签: javascriptnode.jspowershellpowershell-2.0

解决方案


推荐阅读