如何解决在WindowsExplorer中使用预览窗格选择的文件将锁定文件,因此Powershell无法输出到该文件
我有一个计划的脚本,该脚本将一堆具有静态名称的HTML文件输出到远程位置。我注意到,如果我在Windows资源管理器中选择了这些文件之一,以便其内容显示在“预览窗格”中,则Powershell无法覆盖该文件并跳过对其进行更新。 仅当输出文件位于远程位置时,才会发生这种情况。如果文件是本地文件,则工作正常。 在这种情况下,如何强制PowerShell覆盖远程文件?许多用户使用这些报告,并且如果其中之一离开Windows资源管理器窗口,并且在脚本运行时一夜之间突出显示了其中一个文件,则该文件将不会更新。
解决方法
- 将HTML文件移动到Web服务器。您将完全解决您的问题。 Windows服务器上的IIS安装程序为
Next,Next,Next
。您可以在旧位置保留指向新文件位置(https:// ....)的链接,以便用户可以轻松导航到新位置。可能可以自动执行此链接(由于现代安全标准,无法确定) - 在写入此文件之前尝试
[System.IO.File]::Delete($path)
。这将从文件系统中删除文件条目,但对于那些暂时打开文件的人来说,文件保持打开状态。这使您的脚本可以写入具有相同名称的新文件。旧文件不带名称存在(已删除),但一直打开到所有人关闭。检查它是否真的用resresh删除了! - 在写入此文件之前尝试
[System.IO.File]::Move($path,$someTrashFullName)
。 $ someTrashFullName可能必须在同一驱动器上。与Delete
相同,但重命名文件。一些自我更新的软件使用此策略。文件已重命名,但仍使用新名称保持打开状态。 - 尝试使用某些文件的快捷方式替换文件。您可以生成具有不同名称的文件并更改shortcut programmatically
- 具有change location using js的HTML文件?他们读取附近的JSON(由导出脚本生成),并在那里查找新文件名。因此,用户在A.json的内部查找中为新名称打开了静态不变的A.html,JS,并将用户重定向到A-2020-08-11.html。我不确定浏览器是否允许从JS读取从网络驱动器打开的文件的JSON文件。
- 剩下的唯一方法是停止网络共享或\并关闭服务器端打开的文件。
- 也许可以完全禁用此文件夹中的预览功能吗?
尝试使用-Force。但是对我来说,这似乎更多是权限问题。
Remove-Item -Path '\\server\share\file' -Force
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。