1

これは基本的なようですが、どこにも見つからないか、理解できません。

インポートしたい.csvファイルがあり、異なるSIDを持つユーザー列を対応するユーザー名に変更してから、.csvにエクスポートして戻します。SIDtoUserを見つける方法は知っていますが、.csvで置換を行う方法がわかりません。また、一部のユーザー列が空白であるか、「admin」があり、そのままにしておく必要があります。

現在

ComputerName,   TimeStamp,  Message,    User               
hp8440,         8/30/2012,  message1,   admin  
hp8440,         8/30/2012,  message2  
hp8440,         8/30/2012,  message3,   S-1-5-21...1105  
hp8440,         8/30/2012,  message4,   S-1-5-21...1255

読みたい

ComputerName,   TimeStamp,  Message,    User  
hp8440,         8/30/2012,  message1,   admin  
hp8440,         8/30/2012,  message2  
hp8440,         8/30/2012,  message3,   user1  
hp8440,         8/30/2012,  message4,   user2
4

2 に答える 2

1
Import-Csv .\sid.csv | ForEach-Object{

    if($_.User -and $_.User -ne 'admin')
    {
        # User is not empty and not admin
        # perform translation and assign the results back to the User column
        # then return the current object back to the pipeline
        $_.User = (New-Object System.Security.Principal.SecurityIdentifier $_.User).Translate([System.Security.Principal.NTAccount]).Value
        $_
    }
    else
    {
        # Ignore empty User or admin 
        # and return the current object back to the pipeline
        $_
    }

} | Export-Csv .\users.csv
于 2012-08-30T15:26:33.320 に答える
0

ワンライナーとして:

Import-Csv .\data.csv |%{ $_.User = ConvertSidToUserName $_.User; $_ } | Export-Csv .\updated.csv

もう少し読みやすい...

$data = Import-Csv .\data.csv

# replace the User Propery
$data |%{ $_.User = ConvertSidToUserName $_.User }

# export back out to csv
$data | Export-Csv .\updated.csv
于 2012-08-30T15:27:08.530 に答える