powershell - 在 PowerShell 中的多行计算属性中显式返回值

标签 powershell psobject

在PS中,使用 Select-Object 时, -Property参数“指定要选择的属性”:

The value of the Property parameter can be a new calculated property. To create a calculated, property, use a hash table.

Valid keys are:

  • Name: <string>
  • Expression: <string> or <script block>

作为起点,这里有一个 anonymous object
$person = [pscustomobject]@{
    FirstName = "Kyle";
    LastName = "Mit"
}
以下计算的属性工作得很好:
$person | Select-Object 'FirstName', 'LastName', 
            @{
                Name="FullName";
                Expression= { "$($_.FirstName) $($_.LastName)" }
            }
哪个正确返回以下内容:
FirstName LastName FullName
--------- -------- --------
Kyle      Mit      Kyle Mit
然而 ,我正在尝试构建一个计算属性,该属性需要一些复杂的逻辑并且需要多行来实现。只要表达式中有另一个返回值,就会返回两个值。
所以下面的查询将返回 FullName{ false, "Kyle Mit" }
$person | Select-Object 'FirstName', 'LastName', 
            @{
                Name="FullName";
                Expression= { 
                    "test" -eq "example"
                    return "$($_.FirstName) $($_.LastName)" 
                }
            }
返回以下内容:
FirstName LastName FullName         
--------- -------- --------         
Kyle      Mit      {False, Kyle Mit}
但我试图明确返回最后一条语句。用 ; 分隔或使用 return似乎没有帮助。
有任何想法吗?

最佳答案

只需用 Out-Null 扔掉不需要的表达式结果.:

$person | Select-Object 'FirstName', 'LastName',
             @{
                 Name="FullName";
                 Expression= {
                     "test" -eq "example" | out-null
                    return "$($_.FirstName) $($_.LastName)"
                 }
             }

关于powershell - 在 PowerShell 中的多行计算属性中显式返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901298/

相关文章:

powershell - 更改 PSObject 中的特定值

arrays - PSObject 数组返回 Powershell 读取单个项目/行

datetime - 为什么 Get-Date 似乎返回 DateTime 对象,但 BinarySerializer 表明它返回一个 PSObject?

powershell - ExpandProperty - 管道中缺少的对象

powershell - 通过纯批处理将远程文件下载到内存中

c# - 为什么 powershell 无法识别 Windows 服务调用的脚本中的 cmdlet?

powershell - PowerShell压缩消息字符串输出

powershell - 从 PowerShell 调用的 SubInACL 输出的双倍间距

powershell - 过滤多个值