我有一个用;
分隔的CSV文本文件,其格式为:
USER_EMPLOYEE_ID;SYSTEM1;USERNAME1
第一列是标识,以下列对是不同活动目录上的用户帐户。我已经放置了垃圾数据,但想法就在那里。
ay7suve0001;ADDPWN;ay7suve0001
AAXMR3E0001;ADDPWN;AAXMR3E0001
ABABIL;ADDPWN;ABABIL
ABDF17;ADDPWN;ABDF17;
ABKMPPE0001;ADDPWN;ABKMPPE0001
ABL1FL;ADDPWN;ABL1FL
AB6JG8E0004;ADDPWN;AB6JG8E0004;
ACB4YB;ADDPWN;ACB4YB
ACK7J9;ADDPWN;ACK7J9
ACLZFS;ADDPWN;ACLZFS;
ACQXZ3;ADDPWN;ACQXZ3
现在要求我必须将@ADDPWN.com
之类的固定字符串附加到所有USERNAME1
值。有些记录有;
而有些记录没有。
是否有快速方法可以将@ADDPWN.com
附加到每条线路上进行处理:
;
@ADDPWN.com
来自PowerShell?
答案 0 :(得分:1)
Import-Csv是你的朋友。以下内容可以让您走上正轨。
Import-Csv "import.csv" -Delimiter ';' |
foreach {
if ($_.username1 -notlike '*@ADDPWN.com') { $_.username1 += '@ADDPWN.com' }
$_
} |
Export-Csv "export.csv" -Delimiter ';'
这假设您的csv文件的第一行是标题行。如果不是,您可以将-Header 'USER_EMPLOYEE_ID','SYSTEM1','USERNAME1'
作为另一个参数传递给Import-Csv。
Export-Csv添加了一些额外的东西,比如参数的引号,所以如果你不想这样,你可能需要使用输出格式。
如需另外说明,请查看Changes last name, first name to first name, last name in last column CSV powershell
答案 1 :(得分:1)
这是一个对我有用的解决方案.........
#opens list of file names
$file2 ="F:\OneDrive_Biz\PowerApps\SecurityCameraVideoApp\file_list_names.csv"
$x = Get-Content $file2
#appends URl to beginning of file name list
for($i=0; $i -lt $x.Count; $i++){
$x[$i] = "https://analytics-my.sharepoint.com/personal/gpowell_analytics_onmicrosoft_com/Documents/PowerApps/SecurityCameraVideoApp/Video_Files/" + $x[$i]
}
$x
#remove all files in target directory prior to saving new list
get-childitem -path C:\_TEMP\file_list_names.csv | remove-item
Add-Content -Path C:\_TEMP\file_list_names_url.csv -Value $x