Что касается этого ...
"Testing $User.OldEmailAddress
... чтобы он работал, сделайте это так ...
$UserInput = Import-Csv 'D:\temp\myemaildata.csv' -Delimiter ','
ForEach($User in $UserInput)
{$User.OldEmailAddress}
<#
# Results
test@test.com
#>
ForEach($User in $UserInput)
{$User.NewEmailAddress}
<#
# Results
test2@test.com
#>
ForEach($User in $UserInput)
{"$User.OldEmailAddress"}
<#
# Results
@{OldEmailAddress=test@test.com; NewEmailAddress=test2@test.com}.OldEmailAddress
#>
ForEach($User in $UserInput){"$($User.OldEmailAddress)"}
<#
# Results
test@test.com
#>
ForEach($User in $UserInput){"$($User.NewEmailAddress)"}
<#
# Results
test2@test.com
#>
... Write-Host не требуется поскольку вывод на экран - это значение по умолчанию PowerShell, если вы не укажете иное. ; -}
Но зачем вообще использовать этот дополнительный l oop, например:
Import-Csv 'D:\temp\myemaildata.csv' -Delimiter ','
<#
# Results
OldEmailAddress NewEmailAddress
--------------- ---------------
test@test.com test2@test.com
#>
Import-Csv 'D:\temp\myemaildata.csv' -Delimiter ',' |
ForEach{$PSItem}
OldEmailAddress NewEmailAddress
--------------- ---------------
test@test.com test2@test.com
Import-Csv 'D:\temp\myemaildata.csv' -Delimiter ',' |
ForEach{$PSItem.OldEmailAddress}
<#
# Results
test@test.com
#>
Import-Csv 'D:\temp\myemaildata.csv' -Delimiter ',' |
ForEach{$PSItem.NewEmailAddress}
<#
# Results
test2@test.com
#>