对PowerShell Web Access的API访问?

use*_*643 5 powershell powershell-remoting

PowerShell Web Access允许您通过Web浏览器运行PowerShell cmdlet.它显示了一个基于Web的控制台窗口.

有没有办法在不将它们输入控制台窗口的情况下运行cmdlet?有没有办法让结果回来?

我正在设想一个应用程序,让非技术用户重新启动打印队列(例如),而不必知道PowerShell.应用程序将显示打印队列列表,然后用户可以选择一个并重新启动队列.该应用程序本质上是一个包装器,负责处理语法和变量,以便用户不需要知道.

有没有办法通过PowerShell Web Access实现这一目标?或者是否还有其他方法可以让非Windows应用程序在不重新发明轮子的情况下向Windows服务器发送任意命令?

Coo*_*ter 2

不适用于 PowerShell Web 访问**。这是为交互式会话而设计的。

有几种方法可以做到这一点。所有示例都是说明性的,可能已经过时、不安全等。

  • 创建运行 C# 的 ASP.NET Web 应用程序。在 C# 中运行 PowerShell。根据需要使用 PowerShell 远程处理。 例子
  • 使用 Windows Presentation Foundation 或 WinForms 创建 GUI 应用程序。根据需要使用 PowerShell 远程处理。 例子
  • 使用 PowerShell 可以访问的 API(例如 REST)创建服务。
  • ** 好吧,我撒谎了。创建一个笨重的解决方案,该解决方案使用通过 PowerShell Web 访问访问的委派、受限端点。
  • 对于上述每个使用 PowerShell 远程处理的解决方案,请考虑委派和/或约束端点。例子

我们有一个网络应用程序,允许某些用户使用某些参数执行某些功能。使用由 C# 支持的 ASP.NET 以及一组预定义的 PowerShell 脚本以及谁可以执行 SQL 数据库中存储的操作的配置。例如...

  • Jane 可以在服务器 Y 上重新启动应用程序池 X。
  • John 可以在服务器 Q 上重新启动服务 Z。
  • IT 支持人员可以从其标准帐户中解锁自己的“管理”帐户。
  • 所有这些都可以在非 Windows 计算机上运行。其中一些可能会被仔细暴露以允许在移动设备上使用:)

如果您有用例,设计系统和编写其背后的代码的少量开销将很快得到回报。

干杯!