通过脚本将网络文件/文件夹设置为脱机(batch / powershell)

时间:2017-12-11 17:14:38

标签: powershell offline

我正在尝试自动执行右键单击文件夹或文件,然后在Windows 7 +中单击“始终可用脱机”的过程。

我无法找到任何命令或批处理方式来执行此操作。到目前为止,我发现这个PowerShell脚本模拟了上下文菜单项上的右键单击操作(在我的情况下,总是可以脱机使用)。

$o = New-Object -ComObject Shell.Application
$o.Namespace("Z:\").Self.verbs() | `
Where-Object { $_.Name -eq 'Always &available offline' } | `
ForEach-Object { $_.DoIt() } 

它不起作用。

如果我尝试传递文件夹或UNC路径而不是驱动器(假设Z:\foldertomakeavailableoffline),我得到的只是“你不能在空值表达式上调用方法。”好像我指定的文件夹不存在。

感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

如果您发布$ o.Namespace(" Z:\")。Self.verbs()结果将会非常有用:

我是:

Name                                     
----                                     
&Open                                    
Git &Add all files now                   
Git &Commit Tool                         
Git &History                             
Git &Gui                                 

Git Ba&sh                                
Scan for Viruses...                      
Hg &Workbench                            

Restore previous &versions               

Combine files in Acrobat...              
Select &Left Folder for Compare              

&Disconnect                              
&Copy                                    
Create &shortcut                         
Rena&me                                  
P&roperties      

在我看来,这里的问题是你没有看到它,这就是id无效的原因。 (它也是非典型菜单项,因为值为true / false)。

我会尝试执行以下操作" pinning"方式:

如果您需要为用户固定文件夹/文件,请尝试以下操作:

$path = “\\path_to\shared\folder”
$objWMI = [wmiclass]”\\.\root\cimv2:win32_offlinefilescache”
$objWMI.Pin($path, 0x00001221, $true)

使用这些位: 0x00001221

OfflineFilesPinControlFlagFill (0x00000001)

  

除了固定项目外,还填充项目。这导致项目作为引脚操作的一部分被完全缓存。如果没有这个标志   设置,该项目仅固定,必须等待其他人填写   同步手段。请注意脱机文件服务   定期在后台填写文件。如果立即离线   可用性不是必需的,它可能更好(性能方面)   不设置此标志,让服务在后台填写文件。

OfflineFilesPinControlFlagForUser (0x00000020)

  

为主叫用户定位项目。这是通常为此函数的调用者设置的标志。重要的是要注意到这一点   脱机文件不支持真正的每用户固定概念。什么时候   一个项目固定为一个用户,它固定为所有用户   机。使用此标志固定的项目可以由any取消固定   有权访问该文件的用户。访问固定的能力   文件取决于用户对计算的文件的访问权限   在线。

OfflineFilesPinControlFlagLowPriority (0x00000200)

  

保留供将来使用。   (我喜欢使用这个,因为LowPriority不会阻塞系统)

OfflineFilesPinControlFlagConsole (0x00001000)

  

如果未设置OfflineFilesPinControlFlagInteractive标志,则忽略此标志。如果是OfflineFilesPinControlFlagInteractive标志   set,此标志表示应该将生成的任何UI定向到   与调用操作的进程关联的控制台窗口。