Estoy tratando de poder interactuar con powershell usando node-powershell.
La salida de Powershell suele ser un objeto de tipo marco de datos que puede almacenar en una variable. Simplemente no tengo claro cómo devolver la salida a JS para almacenarla/mostrarla.
Creo que necesito poder leer la salida estándar, pero no estoy seguro de cómo hacerlo y mantener los datos formateados. Me gustaría que los datos se devuelvan en un objeto.
En mi código, recibo una promesa pendiente, no entiendo por qué.
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)Esta biblioteca parece devolver la salida de texto sin procesar del comando. Para crear objetos a partir de esto, la solución más simple es serializar el resultado en formato JSON dentro de la sesión de PowerShell. Entonces solo tienes que analizar la salida.
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() })();