【发布时间】:2016-08-11 14:28:24
【问题描述】:
我仍在尝试将包含一些数据的 CSV 文件(以逗号分隔)中的重复项动态排序和删除到新的 CSV 文件中。在 -Property $SortByColNames 的堆栈溢出成员之一的帮助下获得了进一步的帮助,但现在我的问题出在 ForEach 部分。如果我将 ForEach 的编号部分硬编码在大括号中并在“-f”之后将列名硬编码,我就能让它工作,但是如果我尝试将这两者变成从函数中的参数传递的变量,它会给我一个包含物理的 CSV 文件-f 部分的字符串。
我尝试将 $ShowColsByNumber 设为字符串和对象变量,并将 $ColumnValueFormat 设为字符串和对象。都不行。
谁能帮忙。
下面是有效的代码,后面是无效的代码:
作品
[string] $Source = 'e:\Temp\DataFromSkywardEdited.csv';
[string] $Destination = 'e:\Temp\DataFromSkywardRD.csv';
[object] $SortByColNames = 'LastName','FirstName';
Get-Content $Source |
ConvertFrom-Csv |
Sort -Property $SortByColNames -Unique |
ForEach {"{0},{1},{2},{3},{4},{5},{6},{7},{8}" -f $_.EmployeeID.Trim(), $_.FirstName.Trim(), $_.LastName.Trim(), $_.Location.Trim(), $_.Department.Trim(), $_.TelephoneNo.Trim(), $_.Email.Trim(), $_.EmpTypeCode.Trim(), $_.EmployeeTypeDescription.Trim()} |
Add-Content $Destination
不工作
[string] $Source = 'e:\Temp\DataFromSkywardEdited.csv';
[string] $Destination = 'e:\Temp\DataFromSkywardRD.csv';
[object] $SortByColNames = 'LastName','FirstName';
[string] $ShowColsByNumber = "{0},{1},{2},{3},{4},{5},{6},{7},{8}";
[object] $ColumnValueFormat = '$_.EmployeeID.Trim()', '$_.FirstName.Trim()', '$_.LastName.Trim()', '$_.Location.Trim()', '$_.Department.Trim()', '$_.TelephoneNo.Trim()', '$_.Email.Trim()', '$_.EmpTypeCode.Trim()', '$_.EmployeeTypeDescription.Trim()';
Get-Content $Source |
ConvertFrom-Csv -Delimiter $Delimiter |
Sort -Property $SortByColNames -Unique |
ForEach {$ShowColsByNumber -f $ColumnValueFormat} |
Add-Content $Destination;
【问题讨论】:
-
您的替换将不起作用,因为您正在为“$_.EmployeeID.Trim()”插入文字字符串。这不会被调用和扩展以添加到您的字符串中。
标签: powershell