在 'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders'
中,我将一些路径设置为旧服务器 . 例如 . :
'My Pictures'设置为 '\\DeadServer\RedirectedFolders\%UserName%\My Documents\My Pictures'
我想用 "C:\Users"
替换 "\\DeadServer\RedirectedFolders"
怎么能在 powershell
中完成?
我尽力而为
Get-ItemProperty -path "Microsoft.PowerShell.Core\Registry::HKEY_USERS\*\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" | ? {$_.PSObject.Properties -like "*DeadServer*"}
但是我觉得我对我想要改变的条目是一个'属性'而不是一个'Item'感到困惑,而且我不知道如何迭代像我做项目这样的属性 .
在你问之前,我没有服用 . 用户收到消息
\ DeadServer \ RedirectedFolders \%UserName%\ My Documents \ My Pictures`上的回收站已损坏 . 您要清空此驱动器的回收站吗?
在登录时保持文件夹重定向不被应用 .
这是我尝试手动强制更改回本地存储 .
3 回答
我想到了 . 花了我很长时间,但我写了一个相当不雅的剧本:
如果你们中的任何一个人,我会喜欢学习更快或更优雅的方法 .
对此并不满意,所以如果有人对此感到羞耻,我会感到高兴和悲伤 . 在验证它是否找到正确的密钥时,它经过了大部分测试 .
使用Psdrive映射HKU,因为它不是PowerShell中的默认驱动器 . 获取至少具有“\ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders”路径的所有密钥 . 通过仅查找具有“S-1-5-21”作为密钥一部分的帐户,省略默认密钥和任何其他区域设置帐户 . 然后,对于位于每个位置的每个注册表值,找到与您要查找的路径匹配的数据 .
在这里稍微关注最后一部分 . 使用匹配的所有值,我们用简单的
-replace
替换数据 . 我有一个-WhatIf
,以确保你测试一些不好的事情 . 我建议评论该行并输出$_.Value -replace $pathToReplace,$newPath
来验证它是否正在按照您的预期进行操作 .Make sure 您更改
$pathToReplace
和$newPath
的值然后测试两次,执行一次 .这是一个易于使用的注册表替换功能,可以递归搜索路径 .