我试图在自定义对象中的每个行实例上执行foreach循环,但foreach将自定义对象作为一个整体。
I.e,
$ADUsersCustomObject = New-Object -TypeName pscustomobject
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name email -Value $ADUsers.EmailAddress
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name first_name -Value $ADUsers.givenName
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name last_name -Value $ADUsers.Surname
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name extension_number -Value $ADUsers.IPPhone
$ADToXYCompare = Compare-Object -ReferenceObject $ADUsersCustomObject -DifferenceObject $APACXYUsers.members -Property email -PassThru
foreach ($UserADObject in $ADToXYCompare){
# Do X and Y
}
问题是$UserADObject将返回所有内容作为一个整体:
+--------------------------------------------+---------------+--------------------+--------------------+
| email | first_name | last_name | extension_number |
+--------------------------------------------+---------------+--------------------+--------------------+
| {abc@test.com, def@test.com, ghi@test.com} | {im, a, test} | {bee, sting, wasp} | {4100, 4101, 4102} |
+--------------------------------------------+---------------+--------------------+--------------------+
而不是返回对象的单个实例:
+--------------+------------+-----------+------------------+
| email | first_name | last_name | extension_number |
+--------------+------------+-----------+------------------+
| abc@test.com | im | bee | 4100 |
+--------------+------------+-----------+------------------+
有什么想法吗?
修复!非常感谢。我用
$Fixed = @()
$ADUsers | ForEach-Object{
$ADUsersCustomObject = New-Object -TypeName pscustomobject
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name email -Value $_.EmailAddress
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name first_name -Value $_.GivenName
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name last_name -Value $_.Surname
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name extension_number -Value $_.IPPhone
$Fixed += $ADUsersCustomObject
}
问题来自于以下事实:
Add-Member -MemberType NoteProperty -Name email -Value $ADUsers.EmailAddres
s
您将所有$ADUsers
中的EmailAddress
的列表放入email
中。
您必须在$ADUsers
上循环,为每次使用$ADUsers
创建一个$ADUserCustomObject
,然后将其添加到$ADUsersCustomObject
中。
谢谢!!我用
$Fixed = @()
$ADUsers | ForEach-Object{
$ADUsersCustomObject = New-Object -TypeName pscustomobject
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name email -Value $_.EmailAddress
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name first_name -Value $_.GivenName
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name last_name -Value $_.Surname
$ADUsersCustomObject | Add-Member -MemberType NoteProperty -Name extension_number -Value $_.IPPhone
$Fixed += $ADUsersCustomObject
}