I'm trying to be able to interact with powershell using node-powershell.
Powershell output is typically a dataframe type object you can store in a variable. I'm just not clear on how to get the output back into JS to store/display it.
I think I need to be able to read the stdout but I'm not sure how to do this and keep the data in a formatted way.I'd like the data returned in an object.
In my code, im getting a pending promise back, i don't understand why.
const { PowerShell } = require('node-powershell')
const poshInstance = async () => {
const ps = new PowerShell({
executionPolicy: 'Bypass',
noProfile: true,
})
const command = PowerShell.command`Get-LocalGroup`
const output = await ps.invoke(command)
//const output = await PowerShell.$`Get-LocalGroup`
ps.dispose()
const stringFromBytes = String.fromCharCode(...output.stdout)
// console.log(stringFromBytes)
return JSON.stringify(stringFromBytes)
}
const op = poshInstance()
console.log(op)
CodePudding user response:
This library seams to return raw text output of the command. To create objects from this the simplest solution is to serialize the result to JSON format inside powershell session. Then you just have to parse the output.
const { PowerShell } = require('node-powershell')
const poshInstance = async () => {
const ps = new PowerShell({
executionPolicy: 'Bypass',
noProfile: true
})
const command = PowerShell.command`Get-LocalGroup | ConvertTo-Json`
const output = await ps.invoke(command)
ps.dispose()
console.log(output)
const result = JSON.parse(output.raw)
console.log(result)
}
(async () =>
{
await poshInstance()
})();