在PowerShell ISE中导入Csv锁文件

在PowerShell ISE中导入Csv锁文件,powershell,powershell-4.0,Powershell,Powershell 4.0,我想用PowerShell读取一些CSV文件,然后用不同的分隔符将它们保存在同一位置: $content = (import-csv -path $filepath -Encoding utf8 -Delimiter ",") write-host $(& ..\DLLs\Handle\handle.exe $filepath) remove-item $filepath export-csv ... 删除文件步骤失败。 我已经按照中的建议添加了handle.exe调试信息,它确实表

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

$content = (import-csv -path $filepath -Encoding utf8 -Delimiter ",") 
write-host $(& ..\DLLs\Handle\handle.exe $filepath)
remove-item $filepath
export-csv ...
删除文件步骤失败。 我已经按照中的建议添加了handle.exe调试信息,它确实表明powershell_ise.exe在文件上仍然有一个句柄。脚本完成后,我可以根据自己的意愿删除或重命名它

如何解决此问题?

请尝试省略
删除项
cmdlet,因为它可能不是必需的。
Import CSV
cmdlet不应锁定文件,我无法复制该文件。但是,您可以尝试使用
Get Content
读取文件并将其传输到
ConvertFrom Csv
cmdlet(注意:您不需要为逗号分隔的Csv显式指定分隔符):


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

上面的代码在管道中运行,其中一部分在文件中搜索特定文本

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

当时锁定的是选择字符串命令,而不是导入csv。

仅导出而不删除是不起作用的。而将
Get Content
ConvertFrom CSV
结合使用,两者都不起作用。我同意它不应该锁定,我相信我已经看到它在不同的系统上有不同的行为。这就是我在这里所拥有的。等待在64位版本上使用ISE x86。这有什么意义吗?当文件存在时,P.S.导出CSV投诉。请尝试在
导出CSV
cmdlet上使用
-force
参数。仔细检查后,我无法保持我的声明,它在64位版本中工作。我不想把任何人引入歧途。
-force
参数也没有帮助,似乎需要删除它。
ls *.csv | select-string "someText" | % { do the CSV Stuff }