Powershell получает значения из файла CSV - PullRequest
0 голосов
/ 28 мая 2020

У меня есть CSV-файл, который выглядит следующим образом:

  OldEmailAddress,NewEmailAddress
  test@test.com,test2@test.com

Код оболочки Power для импорта файла:

 $UserInput = Import-csv "C:\Powershell\UserList.txt" -Delimiter ",";

Я собираюсь использовать foreach l oop и пытается записать значения, но распечатывает их как массив в окне PowerShell.

    foreach ($User in $UserInput) 
    {
     Write-Host $User.OldEmailAddress;
    }

На консоли отображается не только это поле, а полный массив.

   @{OldEmailAddress=test@test.com; NewEmailAddress=test2@test.com}

Почему это происходит?

1 Ответ

1 голос
/ 28 мая 2020

Что касается этого ...

"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
#>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...