PowerShell.
使用PowerShell,您可以选择在PowerShell脚本或二进制PowerShell cmdlet中创建可重用命令。PowerShell专门为命令行接口设计,支持输出重定向以及轻松启动EXE并捕获其输出。我认为最好的部分之一是,PowerShell标准化并处理了参数解析。你所要做的就是声明命令的参数,PowerShell会为你提供参数解析代码,包括对类型、可选项、命名、位置、强制性、管道绑定等的支持。例如,以下函数声明展示了这一点:
function foo($Path = $(throw 'Path is required'), $Regex, [switch]$Recurse)
{
}
foo
Path is required
foo c:\temp '.*' -recurse
foo -reg '.*' -p c:\temp -rec
PowerShell 2.0高级函数提供了更多功能,例如参数别名-CN
替代-ComputerName
、参数验证[ValidateNotNull()]
和用于使用和帮助的文档注释,例如:
function AdvFuncToProcessPaths
{
[CmdletBinding(DefaultParameterSetName="Path")]
param(
[Parameter(Mandatory=$true, Position=0, ParameterSetName="Path",
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
HelpMessage="Path to bitmap file")]
[ValidateNotNullOrEmpty()]
[string[]]
$Path,
[Alias("PSPath")]
[Parameter(Mandatory=$true, Position=0, ParameterSetName="LiteralPath",
ValueFromPipelineByPropertyName=$true,
HelpMessage="Path to bitmap file")]
[ValidateNotNullOrEmpty()]
[string[]]
$LiteralPath
)
...
}
请看属性如何给你更精细的控制PowerShell参数解析引擎。还要注意可以用于用法和帮助的文档注释,如下所示:
AdvFuncToProcessPaths -?
man AdvFuncToProcessPaths -full
这真的非常强大,也是我停止编写自己的小型C#实用工具exe的主要原因之一。参数解析占了80%的代码。