Powershell-从csv读取并更改对象中的值,然后写入新的csv文件

Powershell-从csv读取并更改对象中的值,然后写入新的csv文件,powershell,Powershell,我有一个csv文件,我想将文件中的电子邮件地址与广告中的正确电子邮件地址进行比较,如果不匹配,我想更正邮件地址,然后将其全部写入新文件 someFile.csv的内容 user_id name username email password admin 1 Mr Foo mrFoo1 mrFoo1@domain.com a 0 2 Ms Bar

我有一个csv文件,我想将文件中的电子邮件地址与广告中的正确电子邮件地址进行比较,如果不匹配,我想更正邮件地址,然后将其全部写入新文件

someFile.csv的内容

user_id name            username    email               password    admin
1       Mr Foo          mrFoo1      mrFoo1@domain.com   a           0
2       Ms Bar          msBar2      msBar2@domain.com   a           1
剧本内容

$current = Import-Csv c:\someFile.csv -Delimiter ";"
$new = @()

foreach($a in $current){
    try {
        if (Get-ADUser $a.username -Properties EmailAddress | where {$_.EmailAddress -eq $null }) {
            <set the field email to N/A>
                    }
        else {
            $realMail =  Get-ADUser $a.username -Properties EmailAddress  | select EmailAddress
            if ($a.email = ($a.username + "@domain.com")) { 
                $a = $a -replace $a.email, $realMail.EmailAddress #does not work
            }
        }
        $new += $a
        }
    catch [exception]{
        $_.Exception.message
    }
}
$new | Select-Object user_id, name, username, email, password, admin | Export-Csv -Path c:\someNewFile.csv -Encoding UTF8 -NoTypeInformation -Delimiter ";"
$current=Import Csv c:\someFile.Csv-分隔符”
$new=@()
foreach(当前美元中的a){
试一试{
if(获取ADUser$a.username-Properties-EmailAddress |其中{$\ e.EmailAddress-eq$null}){
}
否则{
$realMail=Get ADUser$a.username-Properties EmailAddress |选择EmailAddress
如果($a.email=($a.username+“@domain.com”){
$a=$a-替换$a.email,$realMail.EmailAddress#不起作用
}
}
$new+=$a
}
捕获[例外]{
$\异常.message
}
}
$new |选择对象用户id、名称、用户名、电子邮件、密码、管理员|导出Csv-路径c:\someNewFile.Csv-编码UTF8-NoTypeInformation-分隔符“

我认为您可以通过更改行来实现所需的输出:

$a=$a-替换$a.email、$realMail.EmailAddress#不起作用
致:

$a.email=$realMail.EmailAddress

当使用-replace替换有故障的电子邮件地址时,它无法正常工作。而不是
user\u id:13 name:Ingrid name用户名:ajaxoi01电子邮件:AJAXOI01@domain.com密码:管理员:0
我得到
@{user\u id=14;name=Thomas SomeName;username=akesst01;电子邮件=TAkesson@domain.com;password=a;admin=0}
然后我指的是格式,而不是内容。它不再将其识别为对象。当您呈现它时,someFile.csv不是csv文件,而是位置字段格式。