用于执行 PowerShell 脚本的简单 HTTP API

  • Jonathan Allen
  • 臧秀涛

2014 年 10 月 7 日

话题:DevOps

HTTP 之上的 REST 和类 REST 接口近来非常流行。不久之前我们曾报道过,Oracle 发布了一个针对 MySQL 的、基于 HTTP 的 API 原型。正式版本还没出来,微软的 Steve Lee 就在“用于执行 PowerShell 脚本的简单 HTTP API”一文中发布了通过 HTTP 执行 PowerShell 的示例代码。

这并非 PowerShell 的第一个远程接口,它是通过 PowerShell 远程处理协议(PowerShell Remoting Protocol,PSRP)实现的。但是该协议是为 Windows 机器上的 PowerShell 控制台设计的;与 HTTP 不同,PSRP 无意成为运行在任何操作系统上的任何程序的编程访问接口。

这个 API 本身就是一个 PowerShell 脚本,所以要修改功能,只需要修改这个脚本,无需编译。

这个脚本内部使用了 System.Net.HttpListener。安全方面,默认使用的是集成的 Windows 身份验证(Integrated Windows Authentication),但是可以在命令行中覆盖掉这一设置。示例代码中并没有介绍 SSL 的使用,但如果非常熟悉如何结合使用 SSL 认证和 HttpListener 类,实现起来非常容易。

更重要的是,对编写 PowerShell 模块而言,这是一个很棒的教程。包括注释和空行在内,不足 300 行代码,很容易理解。

查看英文原文:Written in PowerShell, a HTTP API for Executing PowerShell Scripts

DevOps