我们可以捕获所有命令并在它们传递给PowerShell之前修改它们吗?

时间:2015-04-27 21:43:13

标签: windows shell powershell automation

我想扩展powershell,以便它支持更广泛的命令,包括支持运行与系统中的可执行文件名匹配的命令。我知道许多脚本编写人员实现了脚本,这些脚本将帮助从系统的路径或注册表运行应用程序。例如,这里有一个类似的想法:http://www.codeproject.com/Articles/224166/bash-like-prompt-in-PowerShell-and-app-run我要求更多。我想只键入程序的名称,它将调用该程序而无需额外输入(甚至不是额外脚本的别名)

粗略地说,我想添加支持,

  • 所有运行命令。例如,

    PS>记事本++

    PS>铬

我知道'启动chrome'会工作。但并非所有应用程序都以这种方式工作。 例如,如果chrome是命令,我会添加一个' start'在它之前。如果该命令与其他可执行文件匹配。我会发送& " \路径\到\可执行"

此外,我想摆脱命令的开始。我还想添加以下功能,

  • 支持日志,电源,基本转换等的一些基本数学语法
  • 一些必要的工具(数学和其他必要的二进制文件 默认情况下安装的可执行二进制文件)

2015年。命令提示和炮弹仍然如此愚蠢。因此,我将编写一个自定义shell。在重新发明轮子之前,我想确保使用powershell扩展命令已经无法做到这一点。

我需要访问发送到powershell执行的所有命令,并在powershell执行之前修改它们。

1 个答案:

答案 0 :(得分:0)

关于您的第一个案例,启动某些可执行文件see my answer here about why this is happening and how you can deal with it

就其他内容而言,我认为不可能添加自己的操作符,但您可以编写自己的函数。您还可以使用可在.Net中使用的任何类/类型/库,包括您自己编写的类。

您甚至可以在字符串中使用Add-Type C#(或VB.net?)代码来添加功能。很可能有一种方法可以在某个现有的.Net库中执行您想要的操作,所以我会首先查找它们。

PowerShell是非常惊人和广泛的,因为它具有.Net背后的全部功能。

也许您可以展示一些[伪]代码示例,说明您希望提议的功能如何工作,然后我们可以发布一些解决方法。