我仍然试图将包含某些数据的CSV文件(用逗号分隔)中的重复项从动态排序并删除到新的CSV文件中。得到了-Property $ SortByColNames的堆栈溢出成员的帮助,但现在我的问题在ForEach部分。如果我在大括号内使用ForEach的编号部分和“-f”后面的列名进行硬编码,但如果我尝试将这两个参数传递给函数中的参数,它会给我一个包含物理参数的CSV文件-f部分的字符串。使用PowerShell中的排序对象进行排序第2部分
我试图让$ 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()”插入文字字符串,您的替换将不起作用。这不会被调用并扩展为添加到您的字符串。 –