前言
在进行 Windows 系统管理时,WinRM 是一个非常常用的工具。相比于 SSH,WinRM 能够稳定地访问 Windows Server 主机上的 PowerShell 和 CMD 接口,对自动化脚本的执行提供了非常好的支持。我们可以使用 WinRM 访问远程主机,并在其中执行命令、脚本,甚至将文件复制到目标主机上。在本文中,将重点介绍一个 NPM 包 —— winrmjs,这个包提供了一个 Node.js API,使得我们可以在 Node.js 中非常方便地使用 WinRM。
安装
首先,我们需要在本地项目中安装 winrmjs 包:
--- ------- ------- ------
基本用法
winrmjs 包提供了一个 winrmjs.Wsman 类,我们可以使用该类创建一个连接至远程主机的 WinRM 对象。下面是示例代码,连接到远程 Windows 服务器,并执行一条命令:
----- - ----- - - ------------------- -- -------- ----- ------ - --- ------- ----- --------------- ----- ----- ----- --------- --------- ------- --------- ---------------- --------- ---------- --- -- ---- ------------------------------------------- -- - ----------------------- ---- ---------------- -- - ------------------ ---------------------- -------------- -- - ------------------- ---------------------- --- -------------- -- - ------------------- ---
我们首先创建了一个连接对象 client
,并在 client.shell()
方法中执行了一条 PowerShell 命令,在命令执行完成后,关闭了这个 shell 连接。
配置选项
WinRM 可以通过多种协议进行访问,例如 HTTP,HTTPS,是否需要身份验证等等。winrmjs.Wsman 类的构造函数可以接收一个配置对象,该对象包含了 WinRM 连接的所有选项。下面是这个参数的详细解释:
参数名 | 说明 |
---|---|
host | 远程主机名或者 IP 地址 |
port | WinRM 服务端口。默认端口为 5985(HTTP)/ 5986(HTTPS) |
path | WinRM 服务 HTTP 地址。默认为 /wsman |
protocol | WinRM 协议,可以是 'http' 或 'https'。默认为 'http' |
username | WinRM 认证用户名 |
password | WinRM 认证密码 |
basicAuthOnly | 如果 WinRM 服务只接受基本的身份验证,设置为 true。默认为 false |
disableCertCheck | 是否验证 SSL 证书。设置为 true 时将跳过证书检查,仅限于测试。默认为 true |
例如:
----- ------ - --- ------- ----- --------------- ----- ----- -- - ---- ---- ----- ----- --------- --------- ------- -- -- ----- --------- ---------------- --------- ---------- ---
文件传输
除了执行命令外,winrmjs 还能够将文件传输到目标服务器上或者从目标服务器上下载文件。用 winrmjs.Wsman 类的 upload 和 download 方法,将文件上传或者下载。下面是上传文件的示例代码:
----- ------ - --- ------- ----- --------------- ----- ----- ----- --------- --------- ------- --------- ---------------- --------- ---------- --- ------------------------------------------- -- - ---------------------- ---------------------- ------------------------------ -- - ---------------------- ---------------------- -------------- -- - --------------------- ------- ---------------------- --- -------------- -- - --------------- ----- ---- ------- ---
在该示例代码中,我们使用了 client.upload()
方法上传文件。该方法需要传递三个参数:
- shellId:shellId,即在 remote 主机上执行命令所开辟的 shell 对象的 ID。
- 本地文件路径。
- 远程文件路径。
结束语
本文介绍了 winrmjs 包的一些基本用法,还涉及到了 WinRM 连接的多个选项和文件上传的使用方法。如果你需要远程管理 Windows 系统,或者使用 Node.js 执行 PowerShell 脚本,winrmjs 包绝对是一个非常有用的工具。希望读者们能够通过本篇文章,了解到 winrmjs 包的基本方法,也更好地掌握WinRM 远程管理技能,为后续的 Windows 主机管理工作提供便利。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6006710f8dd3466f61ffe296