Skip to content

⚡ Lightweight, functional, promise-based powershell wrapper

License

Notifications You must be signed in to change notification settings

kanton-aargau/windows-powershell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

windows-powershell

⚡ Lightweight, functional, promise-based powershell wrapper

NPM version Dependency Status License Js Standard Style

Installation

npm install windows-powershell

Features

  • Promise API
  • Composable API via #pipe()
  • Converts powershell like objects to json
  • Converts pascal case keys to camel case (LastErrorCode -> lastErrorCode)

Example

In this example we get the name of regedit.exe. As you can see we don't need to parse the output since it has already been converted to json.

import { shell, pipe, toJson } from 'windows-powershell'

function process (io) {
  const { json, stdout, stderr } = io
  // json -> { name: 'regedit.exe' }
  // stdout -> raw output from the cli
}

const cmd = pipe('get-itemproperty c:\\windows\\regedit.exe', 'select name')
shell(toJson(cmd)).then(process)

Creating objects

native powershell

$a = new-object PSObject; $a | add-member name test; $a | add-member version 0.0.1; $a

windows-powershell

shell(create({ name: 'test', version: '0.0.1' })).then(logStdout)

output

name    version        
----    -------                       
test    0.0.1     

Composing

Composing commands allows as to create intermediate values.

native powershell

$a = 1; $a = 2; echo $a + $b;

windows-powershell

shell(compose('$a = 1', '$a = 2', 'echo $a + $b')).then(logStdout)

output

3

Piping

native powershell

get-wmiobject Win32_LogicalDisk | select name

windows-powershell

const cmd = pipe(
  'get-wmiobject Win32_LogicalDisk',
  'select name'
)

shell(cmd).then(logStdout)

output

name
----
C:
D:
H:

Tests

npm test

License

MIT

About

⚡ Lightweight, functional, promise-based powershell wrapper

Resources

License

Stars

Watchers

Forks

Packages

No packages published