将成员/列附加到PSObject

时间:2016-08-24 05:55:18

标签: powershell

我正在寻找一种方法来在PowerShell中向对象添加额外的成员,而无需创建新对象和循环。

通常当我运行一个脚本时,它将再次是一个服务器列表,我想对我正在返回的数据附加一些额外的信息,但我找不到一种方法来做到这一点而不创建一个新的PSObject和循环通过现有对象并逐行添加额外成员(下面简化示例)

$FileList = get-childitem | Select-Object Name, DirectoryName
$FileListOBJ = @()

foreach ($item in $FileList)
{    
    $Temp = New-Object PSObject 
    $Temp | Add-Member NoteProperty ServerName "XServerName"
    $Temp | Add-Member NoteProperty FileName $item.Name
    $Temp | Add-Member NoteProperty Directory $item.DirectoryName    

    $FileListOBJ += $Temp
}

$FileListOBJ

有没有办法沿着这些方向去做......

get-childitem | Select-Object "ServerName", Name, DirectoryName

上面的代码创建了额外的成员,但是我无法找到一种方法来填充附加成员我想要的详细信息。

2 个答案:

答案 0 :(得分:1)

你也可以在没有add-member调用的情况下创建一个新对象:

$FileList = get-childitem | Select-Object Name, DirectoryName
$FileListOBJ = @()
foreach ($item in $FileList)
{    
    $FileListOBJ += [PSCustomObject]@{ServerName="ServerName";FileName=$item.Name;Directory=$item.DirectoryName}
}

$FileListOBJ

答案 1 :(得分:0)

当然,您可以使用计算属性(更多关于它们here):

get-childitem | Select-Object @{l="ServerName"; e={"XServerName"}}, Name, DirectoryName