javascript - 从 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)
解决方案
推荐阅读
- html - 在旋转元素中居中文本
- excel - 重置默认工作簿打开选项
- kubernetes - SeaweedFS k8s 100 硬盘
- python - Pandas - 根据股票拆分调整股价
- java - 如何动态创建多个相同类型的bean然后收集/自动装配它们
- sprite-kit - SpriteKit - HIT 后碰撞关闭
- javascript - 悬停图像未居中(CSS + JS)
- python - 是否可以像字典字符匹配那样对 Numpy 2D 数组进行排序
- .net - 单元测试 HttpClient 时如何模拟 GetDiscoveryDocumentAsync?
- flutter - 在颤振中运行我的 ios 设备时面临特定颤振项目中的问题