我正在编写一个PS脚本,需要将给定路径(例如%UserProfile%\ Pictures)“转换”为其完整路径,并返回可能存在的任何特殊文件夹值,将真实路径转换为GUID和SpecialFolder名称。
从KNOWNFOLDERID的MSDN shell引用(不能发布超过2个链接ATM.Grrr),我假设每个“特殊文件夹”都有各种属性,如GUID,显示名称,默认路径等。
我在MSDN及其方法上遇到过IKnownFolderManager接口;看起来像我追求的那种东西。麻烦的是,我找不到任何PowerShell如何使用这个“shell接口”的例子,并且想知道是否有人愿意提供一个例子。
抱歉不分享我到目前为止所尝试过的内容,但它只不过是this "Hey, Scripting Guy" post而已达到目前为止。
修改
我通过脚本在Windows库之后创建基于XML的文件的大部分方式允许我按照我想要的方式进行设置,从而消除了MS强加的许多基于GUI的限制。 XML文件将由“Logon”PowerShell脚本创建,该脚本从HKCU键读取某些变量。注册表值本身由GPP注册表设置创建。我希望管理员能够通过GPP设置注册表属性及其变量来说出“图片”%UserProfile%/Pictures
。要使XML文件使用此路径,PS脚本必须展开%UserProfile%
。没问题。此外,XML文件“理解”特殊文件夹,但它使用特殊文件夹的GUID。
有一个注册表项(HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions
),其中包含我可用于将文件夹名称转换为GUID的文件夹名称和GUID,但问题是,此注册表项使用“旧版显示名称”(根据KNOWNFOLDERID,我的图片)与真实路径(图片)相对。我实际上问的是,是否有一种方法可以“枚举”显示KNOWNFOLDERID页面的常量。我知道这些只是常量,但可以以某种方式从系统中拉出相同的“表”。然后我可以找到一种方法来实现我的脚本需要的“查找”/“转换”。
答案 0 :(得分:2)
我认为你可以通过以下方式获得你想要的东西:
[environment]::getfolderpath("mydocuments")
[environment]::getfolderpath("mypictures")
[environment]::getfolderpath("userprofile")
和其他人,即:
PS U:\> [environment]::getfolderpath("mypictures")
C:\Users\raf\Pictures