从UNC共享路径中删除远程锁定

时间:2011-07-29 20:26:24

标签: c# filesystems locking

我现在遇到麻烦,正在为我们的部署方案找到解锁UNC路径文件的解决方案。以下是目前的情况:

我们有多台文件服务器机器。我们的部署应用程序设置为从MSBUILD放置位置部署到一组目标文件夹(使用已定义的过滤器等)。这些文件共享被公司的许多用户用来运行我们的软件。当这些用户打开我们的软件时,他们会对他们使用的文件创建远程读锁定。

我们有管理员帐户来执行此操作(通过模拟)我们的部署人员。我们也可以通过远程计算机管理手动执行此操作。当我们尝试在autobuild中自动化该过程时会出现问题。

在我们当前状态下,我们尝试使用openfiles.exe来读取和解锁文件(通过/ query / s // server / v),解析ID,然后使用ID删除锁定。我们遇到的问题是openfiles.exe返回本地文件路径与UNC文件路径。

有没有办法从服务器远程删除文件锁只知道文件的UNC路径(并且不知道它的本地路径)?我们不一定有权在目标服务器上添加应用程序(因为有很多),因此PsExec等解决方案 - > Handle.exe很可能不适合我们。

提前感谢您的帮助! -Corey

1 个答案:

答案 0 :(得分:0)

我很确定您可以使用WMI在Windows计算机上查询其定义的共享列表,其中包括共享名称和本地路径。

鉴于WMI与PowerShell的强大集成 - 并且考虑到PowerShell比原始WMI更容易使用 - 编写一个将UNC路径转换为的for powershell函数应该不会太难主机的本地路径。

作为起点,请查看PowerShell Scripting - WmiObject Win32_Share

  

此脚本的目的是列出服务器上的共享。实际上,此代码将枚举任何计算机上的共享。

如果你的工作正常,请分享结果!