Powershell .lnk 部署/同步 - lnk 描述属性

Powershell .lnk 部署/同步 - lnk 描述属性

我一直在编写一个 powershell 同步脚本,该脚本将用于控制用户桌面上的内容(主要是 lnk/快捷方式文件)。我目前已将其设置为进行基本比较,以添加/删除/更新本地存储的文件。我遇到的主要问题是,我没有很好的方法来区分部署的链接和用户创建的链接。根据我同步文件的方式,我会遇到问题。

问题 1:如果我强制客户端位置与服务器保持同步,则每次运行脚本时桌面上的所有内容都会被清除。

问题 2:如果我不强制客户端同步,当我更改/删除文件时,客户端会保留该文件。

所以如果这有意义的话,我希望有人知道一种方法来标记我发送到本地计算机的文件。然后我可以构建我的脚本来查找该标记并仅影响已部署的文件。

答案1

如果您的所有机器都使用 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

重点关注以下几行的使用:

$shellApp = new-object -com shell.application
$myFolder = $shellApp.Namespace($dir)
$fileobj = $myFolder.Items().Item($file)
...
$v = $myFolder.GetDetailsOf($fileobj,$i)

答案2

我想知道使用文件的 GroupGet-Acl属性Set-Acl是否是根据您的需要标记文件的有效方法。

相关内容