我在PowerShell
中有以下表达式:
$oneTypes = Get-ChildItem -Path $Location -Directory
$onlyCompile = @( $BASE_A, $BASE_B, $BASE_C )
#trying figure this line out
$oneTypes = ($oneTypes | ?{$onlyCompile -contains $_})
我不确定?
和{...}
在这里做了什么?看起来它可能是一个脚本块,但我不确定。我也想知道管道是如何发挥作用的。
答案 0 :(得分:5)
?
用作Where-Object
命令的缩写形式,在这里它意味着过滤所提供的数组中的所有对象$onlycompile
答案 1 :(得分:2)
问题的其他部分的答案是{...}
或?
之后的Where
确实代表了一个脚本块。如果您查看Where-Object的帮助,您会看到:
-FilterScript <ScriptBlock>
Specifies the script block that is used to filter the objects. Enclose the script block in braces ( {} ).
The parameter name (-FilterScript) is optional.
Required? true
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false
FilterScript
参数需要一个scriptblock。它是位置的,因此您不必指定Where -FilterScript { ... }
。它不是管道绑定,但InputObject
参数是管道绑定的。该对象被注入您提供的脚本块$_
。