https://github.com/shoneslab/nodejs-winrm
Make WinRM service calls from NodeJS
https://github.com/shoneslab/nodejs-winrm
nodejs winrm
Last synced: 4 months ago
JSON representation
Make WinRM service calls from NodeJS
- Host: GitHub
- URL: https://github.com/shoneslab/nodejs-winrm
- Owner: shoneslab
- License: mit
- Created: 2018-12-07T19:23:01.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T19:38:44.000Z (over 3 years ago)
- Last Synced: 2025-12-12T13:42:24.976Z (6 months ago)
- Topics: nodejs, winrm
- Language: JavaScript
- Homepage:
- Size: 298 KB
- Stars: 11
- Watchers: 2
- Forks: 13
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nodejs-winrm
[](https://badge.fury.io/js/nodejs-winrm)
[](https://travis-ci.org/shoneslab/nodejs-winrm)
[](https://dev.azure.com/SHONEJACOB/SHONEJACOB/_build/latest?definitionId=1?branchName=master)
nodejs-winrm is a NodeJS client to access WinRM (Windows Remote Management) SOAP web service. It allows to execute commands on target windows machines.
Please visit [Microsoft's WinRM site](http://msdn.microsoft.com/en-us/library/aa384426.aspx) for WINRM details.
## Supported NodeJS Versions
Tested on NodeJS Version > 8.11
## Supported WinRM Versions
As of now Winrm Version 3 is tested.
```
> winrm id
IdentifyResponse
ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor = Microsoft Corporation
ProductVersion = OS: 10.0.xxxx SP: 0.0 Stack: 3.0
```
## Install
On the remote host, a PowerShell prompt, using the __Run as Administrator__ option and paste in the following lines:
```
> winrm quickconfig
y
> winrm set winrm/config/service/Auth '@{Basic="true"}'
> winrm set winrm/config/service '@{AllowUnencrypted="true"}'
> winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}'
```
On the client side where NodeJS is installed
`npm install nodejs-winrm`
## Examples
### Run a Single Command
```
var winrm = require('nodejs-winrm');
winrm.runCommand('mkdir D:\\winrmtest001', '10.xxx.xxx.xxx', 'username', 'password', 5985);
winrm.runCommand('ipconfig /all', '10.xxx.xxx.xxx', 'username', 'password', 5985);
```
### Run multiple Commands (Advanced)
```
var winrm = require('nodejs-winrm');
var userName = 'userName';
var password = 'password';
var _host = '10.xxx.xxx.xxx';
var _port = 5985;
var auth = 'Basic ' + Buffer.from(userName + ":" + password, 'utf8').toString('base64');
var params = {
host: _host,
port: _port,
path: '/wsman'
};
params['auth'] = auth;
//Get the Shell ID
params['shellId']= await winrm.shell.doCreateShell(params);
// Execute Command1
params['command'] = 'ipconfig /all';
params['commandId'] = await winrm.command.doExecuteCommand(params);
var result1= await winrm.command.doReceiveOutput(params);
// Execute Command2
params['command'] = 'mkdir D:\\winrmtest001';
params['commandId'] = await winrm.command.doExecuteCommand(params);
var result2= await winrm.command.doReceiveOutput(params);
// Close the Shell
await winrm.shell.doDeleteShell(params);
```
## Testing
`npm test`
## Maintainers
* Shone Jacob (https://github.com/shoneslab)
## Credits
* https://github.com/jacobludriks/winrmjs