?{ }
块在PowerShell中意味着什么?
例如
[enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000}
答案 0 :(得分:9)
?
是Where-Object
的别名。如果您必须对实际对象执行更复杂的操作,则使用大括号。你也可以写:
[enum]::GetValues([io.fileoptions]) | Where-Object { $_.value__ -band 0x90000000}
答案 1 :(得分:7)
怀疑地使用Get-Alias
cmdlet:
<强>描述强>
Get-Alias
cmdlet在当前会话中获取别名(命令和可执行文件的备用名称)。这包括 内置别名,已设置或导入的别名以及别名 已添加到Windows PowerShell配置文件中。默认情况下,
Get-Alias
采用别名并返回命令名称。使用Definition
参数时,Get-Alias
将使用命令名称 并返回其别名。从Windows PowerShell 3.0开始,
Get-Alias
以“<alias> -> <definition>
”格式显示非连字别名 让您更容易找到所需的信息。
PS D:\PShell> Get-Alias ?
CommandType Name ModuleName
----------- ---- ----------
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias h -> Get-History
Alias r -> Invoke-History
答案 2 :(得分:4)
?是Where-Object cmdlet的别名,但它还有另一个别名 - where。
在脚本块的情况下使用{} 花括号,在这种情况下它是一个过滤脚本块,它主要用于复杂过滤,即多个critera,如下所示:
Get-Service | Where-Object -FilterScript {$_.Name -like '*audio*' -and $_.Status -eq 'Running'}