我有一个成功的脚本,它从本地计算机中获取一些数据分析,并在最后导出一个csv文件。那里没有问题。
Mn问题是,如果有人打开该文件,同时脚本正在写入文件(我有-append开关),则不会写入任何内容,因此我丢失了该特定计算机的数据。
任何想法如何强制写入文件,即使它是打开或使用?谢谢。
现有阵列的功能导出:
$NewCSVObject | Export-CSV '<fullpath>\CleanupResults.csv' -noType -Append
答案 0 :(得分:0)
你真的不想这样做。如果另一个进程已经拥有对该文件的独占访问权限,则只需选择另一个要写入的文件。
试图将数据窃取到其他人正在乱搞的文件中是在寻找麻烦。例如,其他进程可能会将更改写入文件。因此,您的输入将被其他进程所拥有的任何数据替换。
答案 1 :(得分:0)
您可以在PSTools的帮助下通过远程删除文件锁定来执行此操作,然后再写入文件。
如何使用PSFile命令关闭远程计算机上的文件的示例:
PSFile.exe \\ remotecomputername“C:\ File.CSV”-c
您还可以在尝试写入文件锁之前测试文件锁,并在其周围使用逻辑。 这个帖子有一个测试锁的好例子 How can I force a Powershell script to wait overwriting a file until another process is finished reading it?
答案 2 :(得分:0)
您是否尝试将该文件设置为只读?这样可以防止其他人对其进行机会锁定,您仍然可以使用-Force开关向其附加数据。