我正在寻找一种方法来在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
上面的代码创建了额外的成员,但是我无法找到一种方法来填充附加成员我想要的详细信息。
答案 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