2014-01-24 4 views
2

Я пишу сценарий PS, который должен «конвертировать» заданный путь, например% UserProfile% \ Pictures, в свой полный путь и возвращать любые особые значения папок, которые могут существовать, конвертируя истинные пути, в GUID и имена SpecialFolder.Использование интерфейса IKnownFolderManager в PowerShell

Из ссылки оболочки MSDN для KNOWNFOLDERID (не может больше, чем 2 ссылки ATM. Grrr), я предполагаю, что каждую «Специальную папку» имеет различные свойства, такие как GUID, отображаемое имя, по умолчанию путь и т.д.

Я столкнулся с интерфейсом IKnownFolderManager на MSDN и его методами; Похоже на то, что мне нужно. Проблема в том, что я не могу найти примеры PowerShell о том, как можно использовать этот «интерфейс оболочки», и задавался вопросом, готов ли кто-нибудь предложить пример.

Извините, что не поделился тем, что я пробовал до сих пор, но это не более this "Hey, Scripting Guy" post, что касается того, что у меня есть.

Edit:

Я большую часть пути через скрипт для создания файла XML на основе, за библиотек Windows, чтобы позволить мне установить его так, как я хочу, удаляя многие из GUI основанные ограничения, налагаемые MS. XML-файл будет создан сценарием PowerShell «Logon», который считывает определенные переменные из ключа HKCU. Значения реестра сами создаются с помощью параметров реестра GPP. Я хочу, чтобы администратор мог установить свойство реестра и его переменную через GPP, чтобы сказать «Картинки» %UserProfile%/Pictures. Для использования XML-файла для использования этого пути сценарий PS должен быть развернут %UserProfile%. Нет проблем. Также XML-файл «понимает» специальные папки, но использует GUID специальной папки.

Существует ключ реестра (HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions), который содержит имя папки и идентификатор GUID, которые я могу использовать для скрытия имени папки для GUID, но проблема заключается в том, что в этой записи реестра используется «устаревшее отображаемое имя» («Мои рисунки») в отличие от истинного пути (снимки), согласно KNOWNFOLDERID. Я действительно спрашиваю, есть ли способ «перечисления» констант, показанных на странице KNOWNFOLDERID. Я понимаю, что это просто константы, но можно как-то вытащить одну и ту же «таблицу» из системы. Затем я смогу найти способ «Lookup»/«Conversion», который мне нужен.

+6

Существует высокая репутация барьер для создания тегов, потому что новых пользователей имеют плохую привычку делать мета-теги (http://meta.stackoverflow.com/tags/meta-tags/info), которые кажутся полезными для искателя, но они категорически вредны для сайта и обычно не имеют тега " эксперты "вроде тега, такого как [tag: powershell]. Например, вопрос «Hello World» может быть помечен как «помощь», «привет», «мир», «!», «Кодирование» или другие теги без описания. –

+0

Мне непонятно, чего вы хотите достичь. Если вы хотите расширить переменные окружения, такие как '% USERPROFILE%', вы могли бы просто выполнить '$ fullPath = & cmd/c echo '$ pathWithVariables", но я не вижу, как здесь отображаются GUID или «специальные значения папок». Просьба привести несколько примеров ввода и желаемого вывода. –

+0

Извините за повторы, но это позволит мне добавить ограниченный набор символов или применить ответ. Дизайн StackOverFlow, безусловно, уникален !!! – woter324

ответ

2

Я думаю, что вы можете получить то, что вы ищете из следующих функций:

[environment]::getfolderpath("mydocuments") 
[environment]::getfolderpath("mypictures") 
[environment]::getfolderpath("userprofile") 

и другие, а именно:

PS U:\> [environment]::getfolderpath("mypictures") 
C:\Users\raf\Pictures 
Смежные вопросы