2016-12-12 99 views

回答

1

讓我試試。

input.csv:

Name,Status 
JSmith,active 
ASmith,active 
JDoe,inactive 

代碼(文件是我的桌面上):

# import csv file 
Import-Csv "$env:USERPROFILE\Desktop\input.csv" -Delimiter "," | 
    # create calculated property 
    Select-Object @{ Name = "Email"; Expression = { "$($_.Name)@mail.com" } } | 
    # remove column header for export 
    Select-Object -ExpandProperty Email | 
    # export to simple text file 
    Out-File "$env:USERPROFILE\Desktop\output.txt" 

output.txt中:

[email protected] 
[email protected] 
[email protected] 
1

例子:

Import-Csv Test.csv | ForEach-Object { 
    New-Object PSObject -Property ([Ordered] @{ 
    "Name" = $_.Name 
    "Status" = $_.Status 
    "Email" = "{0}@mail.com" -f $_.Name 
    }) 
} | Export-Csv Test2.csv -NoTypeInformation 

這會輸出一個新的CSV文件和一個新列。 (此示例要求由於[Ordered]屬性的PowerShell v3的,你將需要刪除[Ordered]在PowerShell中V2工作的例子。)

如果你只是想導入CSV文件和輸出的名稱列只有@mail.com附加:

Import-Csv Test.csv | ForEach-Object { 
    "{0}@mail.com" -f $_.Name 
} | Out-File Output.txt 
+0

嗨,比爾,我很好奇你爲什麼縮進只有2個空格,你是否使用了像PowerGUI這樣的替代編輯器? – sodawillow

+0

我使用[Visual Studio Code](http://code.visualstudio.com/)。 –

0

只是做

$yourfile="c:\temp\youfile.csv" 

(Import-Csv $yourfile | select *, @{N="Email"; E={"{0}@mail.com" -f $_.Name }}) | 
export-csv $yourfile -notype 
0

如果你只是想創建電子郵件地址數組作爲[string]情況下,(你可以發送到一個文件,如果東東DED):

> (Import-csv list.csv).Name | % { "[email protected]" } 
[email protected] 
[email protected] 
[email protected] 

如果你想修改在輸入Name列,以取代電子郵件地址的名稱(您可以再出口與Export-Csv,如果需要的話):

> Import-csv list.csv | % { $_.Name += '@mail'; $_ } 

Name  Status 
----  ------ 
[email protected] active 
[email protected] active 
[email protected] inactive 

如果你想添加的電子郵件地址欄:

> Import-csv list.csv | % { $name = $_.Name; $_ | Add-Member 'Email' "[email protected]"; $_ } 

Name Status Email   
---- ------ -----   
JSmith active [email protected] 
ASmith active [email protected] 
JDoe inactive [email protected] 
相關問題