powershell - 在带有预览窗格的 WindowsExplorer 中选择的文件会锁定文件,因此 powershell 无法输出到该文件
问题描述
我有一个预定的脚本,它将一堆具有静态名称的 HTML 文件输出到远程位置。我注意到,如果我在 Windows 资源管理器中选择了其中一个文件以便其内容显示在预览窗格中,则 Powershell 无法覆盖该文件并跳过更新它。仅当输出文件位于远程位置时才会发生这种情况。如果文件是本地的,就可以正常工作。在这种情况下,如何强制 PowerShell 覆盖远程文件?许多用户使用这些报告,如果其中一个用户在脚本运行时离开 Windows 资源管理器窗口,其中一个文件在一夜之间突出显示,则该文件将不会被更新。
解决方案
- 将 HTML 文件移动到网络服务器。你将彻底解决你的问题。Windows 服务器上的 IIS 设置是
Next, Next, Next
. 您可以在旧位置留下指向新文件位置 (https://....) 的链接,以便用户可以轻松导航到新位置。可能这个链接可以自动化(由于现代安全标准不确定) [System.IO.File]::Delete($path)
在写入此文件之前尝试。这会从文件系统中删除文件条目,但对于那些现在打开文件的人来说,文件是打开的。这会使您的脚本写入具有相同名称的新文件。旧文件没有名称存在(已删除),但在每个人都关闭它之前保持打开状态。用 resresh 检查它是否真的被删除了![System.IO.File]::Move($path, $someTrashFullName)
在写入此文件之前尝试。$someTrashFullName 可能必须在同一个驱动器上。与 相同Delete
,但重命名文件。一些自我更新软件使用这种策略。文件已重命名,但仍以新名称保持打开状态。- 尝试用某个文件的快捷方式替换文件。您可以生成具有不同名称的文件并以编程方式更改快捷方式
- 使用 js 更改位置的HTML 文件?他们读取附近的 JSON(由导出脚本生成)并在那里查找新文件名。因此,用户打开静态未更改的 A.html、JS 在 A.json 中查找新名称并将用户重定向到 A-2020-08-11.html。我不确定浏览器是否允许从 JS 中读取从网络驱动器打开的文件的 JSON 文件。
- 剩下的唯一方法是停止网络共享或\并关闭服务器端打开的文件。
- 完全禁用此文件夹中的预览可能会很有趣?
推荐阅读
- c# - NLog、UWP - 将日志写入 System.Diagnostic.Debug
- javascript - 使用多个复选框取消隐藏 div
- google-colaboratory - 可以将 google colab 笔记本名称分配给 python 变量。在 Jupyter 中,您可以使用 javascript,但这在 colab 中不起作用
- r - 如何从 2 个不同长度的数据框中显示双 y 轴的图例?
- python - 如何创建索引和列都是同一 df 列的唯一值的数据透视表?
- gnome-shell - 从另一个 gnome 扩展调用函数
- javascript - 在 javascript 中转换时区会导致非常奇怪的结果,我做错了什么还是一个错误?
- unit-testing - Grails 3 控制器单元测试:域类验证在 ControllerUnitTest 中不起作用
- c++ - Hackerrank 中的错误比较三元组代码
- flutter - FutureBuilder 在 null 上调用了方法“findRenderObject”