Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 识别powershell中其他用户的特殊文件夹_Windows_Powershell - Fatal编程技术网

Windows 识别powershell中其他用户的特殊文件夹

Windows 识别powershell中其他用户的特殊文件夹,windows,powershell,Windows,Powershell,我有一个文件服务器,它承载用户的主驱动器。一部分用户具有文件夹重定向,因此从资源管理器查看时,他们的文件夹名称都称为“我的文档” e、 g. \Auser \布瑟 … \库塞尔 \我的文档 \我的文档 \我的文档 \用户 .... Powershell似乎忽略了特殊的“我的文档”名称,只在下面列出了真实的文件夹名称。普通文件夹和重定向文件夹的powershell属性似乎相同 如何使用powershell识别哪些文件夹具有特殊的“我的文档”名称?感谢jscott提供有关Desktop.ini的

我有一个文件服务器,它承载用户的主驱动器。一部分用户具有文件夹重定向,因此从资源管理器查看时,他们的文件夹名称都称为“我的文档”

e、 g.
\Auser
\布瑟

\库塞尔
\我的文档
\我的文档
\我的文档
\用户
....

Powershell似乎忽略了特殊的“我的文档”名称,只在下面列出了真实的文件夹名称。普通文件夹和重定向文件夹的powershell属性似乎相同


如何使用powershell识别哪些文件夹具有特殊的“我的文档”名称?

感谢jscott提供有关Desktop.ini的线索

下面是我如何得到我的列表的,它显示了每个用户的文件夹名称,以及它是“普通”文件夹还是哈希表中定义的特殊重定向文件夹之一('桌面'文档'…)


如果要查找Windows 7用户目录中的特殊重定向文件夹,则至少需要使用
Get ChildItem
-Force
,这允许cmdlet获取用户无法访问的项目,如隐藏或系统文件,如


上述操作将返回上述文件夹,因为它们具有ReparsePoint属性。可以找到更多关于这方面的信息。对于我认为您正在寻找的内容,您需要的最低限度
-Force

文件夹列表毫无意义,因为它在同一位置多次列出同一文件夹。你的意思是\Auser\My Documents\Buser\My Documents\Cuser\My Documents等吗?或者,您是否试图声明只有某些用户的共享中才会列出“我的文档”文件夹?如果是这样,这些用户是由GPO定义的吗?每个文件夹都是我的文档的根级别。通常情况下,您不能有相同的子文件夹,但对于特殊文件夹,资源管理器会多次将标签显示为“我的文档”。该文件夹实际上是一个唯一的用户名文件夹,如powershell和cmd提示符中所示。由于文件夹中有Desktop.ini文件,因此这些文件夹似乎只命名为“My Documents”。实际目录名不是“我的文档”。您可以在每个用户的配置文件中检查Desktop.ini文件,但阅读该文件并确定它是否使用了“My Documents”的显示名称将取决于您。通常这是通过
LocalizedResourceName=
配置的。
$SpecialFolders = @{}
$SpecialFolders.Add("LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21770","Documents")
$SpecialFolders.Add("LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769","Desktop")
$SpecialFolders.Add("LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798","Downloads")
$SpecialFolders.Add("LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779","Pictures")
$SpecialFolders.Add("PersonalizedName=","CustomName")


$folders = Get-ChildItem "\\someServer\homeDirs"

$folders | Select Name,@{l="Type";e={
    $desktopini = gci $_.fullname 'Desktop.ini' -Force
    if($desktopini){
        $desktopiniContents = Get-Content $desktopini.FullName
        $SpecialFolders.Keys | %{
            if($desktopiniContents -contains $_){$SpecialFolders.Item($_)}        
        }
    } else {
        "normal"
    }
}}
Get-ChildItem C:\users\SomeUser -Force |  Where-Object {$_.Attributes.ToString().Contains("ReparsePoint")}