Sam*_*rch 4 powershell customization
是否可以在Powershell中创建自定义运算符?而且,我该怎么做?我搜索过谷歌,但没有任何事情发生.
我指的是一个特定的中缀运算符:
$ ExampleList -contains "元素"
我创建了cmdlet(使用Powershell和C#),模块等,所以我只需要广泛的笔画.
您可以创建前缀运算符,但不能创建in-fix或post-fix运算符,例如:
Set-Alias ?: Invoke-Ternary
function Invoke-Ternary {
param(
[Parameter(Mandatory, Position=0)]
[scriptblock]
$Condition,
[Parameter(Mandatory, Position=1)]
[scriptblock]
$TrueBlock,
[Parameter(Mandatory, Position=2)]
[scriptblock]
$FalseBlock,
[Parameter(ValueFromPipeline, ParameterSetName='InputObject')]
[psobject]
$InputObject
)
Process {
if ($pscmdlet.ParameterSetName -eq 'InputObject') {
Foreach-Object $Condition -input $InputObject | Foreach {
if ($_) {
Foreach-Object $TrueBlock -InputObject $InputObject
}
else {
Foreach-Object $FalseBlock -InputObject $InputObject
}
}
}
elseif (&$Condition) {
&$TrueBlock
}
else {
&$FalseBlock
}
}
Run Code Online (Sandbox Code Playgroud)
使用如下:
$toolPath = ?: {[IntPtr]::Size -eq 4} {"$env:ProgramFiles(x86)\Tools"} {"$env:ProgramFiles\Tools"}}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个 cmdlet 并将列表通过管道传输到其中。要评估列表,请务必使用该End函数而不是Process。
Process会自动迭代集合,这是您不想要的。
你的脚本看起来像这样:
$ExampleList | Test-Contains "element"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |