A customer asked me to write some example scripts for unpinning folders and files in their Offlines Cache and here are my examples. Bare with me the scripts are just examples and includes no error handling and only had time to test the scripts on a fully patched Windows 7 SP1 machine, but it should work on later OSes but with no guarantee!
If a user pinned some folders/files themselves by right clicking “Always available offline” try these commands
$path = “\\server\Share\Folder”
$objWMI = [wmiclass]”\\.\root\cimv2:win32_offlinefilescache”
$objWMI.UnPin($path, 0x00001820, $true)
If the folders/files are pinned by the system you need to figure out how the folders/files where pinned, and you can do that by testing these lines
$objWMI.UnPin($path, 0x00001840, $true)
$objWMI.UnPin($path, 0x00001880, $true)
You may ask where I got these numbers from, its from MSDN, right here: http://msdn.microsoft.com/en-us/library/bb309192(v=vs.85).aspx
Flag Value | Meaning |
|
Unpins the items for the calling user. This is the flag typically set for a caller of this function. It is important to note that Offline Files does not support a true per-user notion of pinning. When an item is unpinned for a user, it is pinned for all users of that machine. An item that is pinned with this flag can be unpinned by any user who has access to that file. The ability to access that pinned file depends on the user’s access rights to that file computed while online. |
|
Unpins the items for per-user policy. This differs from the OfflineFilesPinControlFlagForUser flag in that this flag cannot be modified by the user through the Offline Files user interface. Internally, Offline Files sets this flag when items are unpinned by its Group Policy extension. |
|
Unpins the items for all users of the local machine. |
If you need to pin a folder/file for a user try this
$path = “\\server\Share\Folder”
$objWMI = [wmiclass]”\\.\root\cimv2:win32_offlinefilescache”
$objWMI.Pin($path, 0x00001221, $true)
And more information about the pinning command here: http://msdn.microsoft.com/en-us/library/bb309186(v=vs.85).aspx
Want to delete some folders or files from the Offline Files cache? OK lets go with these PowerShell commands
$path = “\\server\Share\Folder”
$objWMI = [wmiclass]”\\.\root\cimv2:win32_offlinefilescache”
$objWMI.DeleteItems($path, 0x0)
There parameters here a bit more interesting so don’t forget to have a look what it means, you may want to do something different. Here the MSDN link: http://msdn.microsoft.com/en-us/library/bb309183(v=vs.85).aspx
Flag Value | Meaning |
|
Do not delete automatically cached items. The default behavior is to delete automatically cached items. |
|
Do not delete pinned items. The default behavior is to delete pinned items. |
|
Delete files even if files are locally modified in the cache. The default behavior is to not delete files with unsynchronized local changes. |
|
Allows administrators to enumerate and delete all files regardless of access rights. If this flag is set and the caller is not an administrator, the function fails. |
If you want to combine two values just do a bit add an example:
0x00000002 + 0x00000004 + 0x80000000 = 0x80000006
0x00000002
0x00000004
+0x80000000
=0x80000006
That was all for this time! Good luck with your Offline Files and PowerShell Scripting!
Keep this going please, great job!
LikeLike