PowerShell ISE中的Import-Csv锁定文件

时间:2017-05-11 07:34:38

标签: powershell powershell-v4.0

我想用PowerShell读取一些CSV文件,然后使用不同的分隔符将它们保存在同一位置:

$content = (import-csv -path $filepath -Encoding utf8 -Delimiter ",") 
write-host $(& ..\DLLs\Handle\handle.exe $filepath)
remove-item $filepath
export-csv ...

我在删除文件步骤时失败了。 我已按照PowerShell unlock/unload imported CSV中的建议添加了handle.exe调试信息,它确实显示powershell_ise.exe仍然具有该文件的句柄。当脚本完成后,我可以按照自己的意愿删除或重命名。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试省略 Remove-Item cmdlet,因为它可能没有必要。 Import-CSV cmdlet不应该锁定文件,我无法重现该文件。但是,您可以尝试使用Get-Content来读取文件并将其传递到ConvertFrom-Csv cmdlet(注意:您不需要明确指定逗号分隔CSV的分隔符):

$content = Get-Content $filepath -raw | ConvertFrom-Csv

答案 1 :(得分:1)

我现在明白了。我的特殊设置,那部分,我省略了,因为我认为没有必要,是罪魁祸首。

以上代码在管道中运行,其中一部分是在文件中搜索某个文本

ls *.csv | select-string "someText" | % { do the CSV Stuff }

然后锁定的是select-string命令,而不是import-csv。