合并2个PowerShell变量

时间:2018-08-03 11:30:44

标签: powershell

我有2个PowerShell变量,它们包含以下格式的数据。对于第一个表:

UserName        Department
--------       ----------
X@Y.com          IT

,并在第二张表中以以下格式显示数据:

Country       MobileNumber                         
-------       ------------
Singapore     +65 8xxxxxxx

和其他变量相同,但列名和内容不同。我想将2个变量合并为一个变量,格式如下:

UserName        Department          Country       MobileNumber
--------        ----------          -------       ------------

更新: Ansgar commnet的结果,以以下格式生成:

UserName            Department          Country                  MobileNumber
--------            ----------          -------                  ------------
{x@y.com, z@y.com}  {IT, Sales}         {Singapore, Singapore}    the same here

2 个答案:

答案 0 :(得分:4)

假设两个变量中都有单独的对象,则可以像这样从它们构造新对象:

$obj = New-Object -Type PSObject -Property @{
    'UserName'     = $obj1.UserName
    'Department'   = $obj1.Department
    'Country'      = $obj2.Country
    'MobileNumber' = $obj2.MobileNumber
}

如果您有对象的数组(从更新的问题来看,是这样),则需要循环构建对象。请注意,这假设两个变量中的对象数量相等。还请注意,除非有一些条件可以将一个数组中的对象匹配到另一个数组中的对应对象,否则必须确保两个数组的顺序正确。

$obj = for ($i=0; $i -lt $obj1.Count; $i++) {
    New-Object -Type PSObject -Property @{
        'UserName'     = $obj1[$i].UserName
        'Department'   = $obj1[$i].Department
        'Country'      = $obj2[$i].Country
        'MobileNumber' = $obj2[$i].MobileNumber
    }
}

答案 1 :(得分:0)

我将创建一个新对象,并将属性映射到哈希表中,如下所示:

首先,您将变量与数据一起使用,在此示例中为

    $Variable1
    $Variable2

然后我们要创建一个哈希表,这会将这两个变量中的每个数据映射到新对象中的一个属性,因此我们从第一个映射两个属性UsernameDepartment变量以及第二个变量中的CountryMobileNumber

    $properties = @{
        'Username'=$Variable1.UserName;
        'Department'=$Variable1.Department;
        'Country'=$Variable2.Country;
        'MobileNumber'=$Variable2.MobileNumber;}

最后,我们创建一个新对象,在本示例中,我将其称为$User。我们告诉该对象包含哈希表的属性:

    $User = New-Object -TypeName psobject -Property $properties