什么?{}在PowerShell中意味着什么?

lee*_*d00 15 powershell

?{ }块在PowerShell中意味着什么?

例如

[enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ndl 14

?是别名Where-Object.如果您必须对实际对象执行更复杂的操作,则使用大括号.你也可以这样写:

[enum]::GetValues([io.fileoptions]) | Where-Object { $_.value__ -band 0x90000000}
Run Code Online (Sandbox Code Playgroud)

  • PowerShell 的字符非常简洁,了解这样的语法通常是一个挑战!我整理了 [PowerShell 标点符号完整指南](https://www.simple-talk.com/sysadmin/powershell/the-complete-guide-to-powershell-punctuation/) 以便轻松解码来自一页挂图。 (4认同)

Jos*_*efZ 10

怀疑使用Get-Aliascmdlet:

描述

     该Get-Aliascmdlet获取当前会话的别名(命令和可执行文件的替代名称).这包括内置别名,已设置或导入的别名以及已添加到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                                            
Run Code Online (Sandbox Code Playgroud)


Kir*_*kov 7

? 是 Where-Object cmdlet 的别名,但它还有另一个别名 - where。

{}大括号用于脚本块,在这种情况下它是一个过滤器脚本块,它主要用于复杂过滤,即用于多个条件,如下所示:

Get-Service | Where-Object -FilterScript {$_.Name -like '*audio*' -and $_.Status -eq 'Running'}
Run Code Online (Sandbox Code Playgroud)