我一直在研究一个 powershell 同步脚本,该脚本将用于控制用户在桌面上拥有的内容(主要是 lnk/快捷方式文件)。我目前已将其设置为进行基本比较以添加/删除/更新本地存储的文件。我遇到的主要问题是我没有很好的方法来区分部署的链接和用户创建的链接。根据我同步文件的方式,我遇到了问题。
问题 1:如果我强制客户端位置与服务器保持同步,每次运行脚本时桌面上的所有内容都会被清除。
问题 2:如果我不强制客户端同步,当我更改/删除文件时,客户端会保留这些文件。
因此,如果这有任何意义,我希望有人知道一种方法来标记我发送到本地计算机的文件。然后我可以构建我的脚本来查找该标志并且只影响已部署的文件。
我想知道在文件的 Group 属性上使用
Get-Acl
andSet-Acl
是否是根据您的需要标记文件的有效方法。如果您的所有机器都使用 NTFS 格式的驱动器,那么您可以使用备用数据流来存储标记脚本添加的链接的消息。
自定义类方法(PowerShell v2):
http://poshcode.org/1430
COM方法:
http://groups.google.de/group/microsoft.public.windows.powershell/msg/66697a0aba7ab9ec
另一种选择是将消息写入一些未使用的元数据项。下面是在 PowerShell 中使用 TagLib 库的示例:
http://huddledmasses.org/editing-media-tags-from-powershell/
这是另一个使用 COM 的示例,但代码做了很多可以通过标准 PowerShell 命令完成的事情:
http://www.vistax64.com/powershell/70760-accessing-metadata.html
重点使用这些行: