0

作为我公司文档清理工作的一部分,我被要求为以下问题找到解决方案。我们希望为我们的(非常非技术人员)用户群提供一种在共享驱动器上查找自己的文件的方法。它应该是按需的,这意味着用户可以在他们认为合适并看到实时结果时使用该解决方案。

我们有一个文件硬盘管理工具 ,所以我可以针对该工具的数据库编写一个存储过程并返回其中包含的数据,但是这种方法有几个缺点:

  • 对用户不友好(再次,技术挑战用户群)
  • 数据可能长达一周
  • 难以实施“按需”战略

理想情况下,有一个 Windows 实用程序,例如 Windows 资源管理器中的搜索栏,用户可以在其中输入他们的凭据,它会返回他们拥有的文件列表。

下一个最好的将是罐装工具——想到任何工具吗?

或者,这是一个自己动手的解决方案。如果是 RYO,什么工具最好?我们是 .Net 商店,但我更喜欢 python。我不知道任何 .net 并且是 python 的初学者。我的老板建议使用 powershell,但我对此也一无所知。

另一件需要考虑的事情:用户拥有 XP Professional 桌面,但我们将在未来几个月的某个时间迁移到 Windows 7。

有什么建议么?TIA。

4

1 回答 1

1

您提出不使用现有管理工具的原因之一是非技术用户的困难。需要明确的是,这是一个演示问题,而不是技术问题。这是一个示例,用于确定用户在他们自己的硬盘上拥有哪些文件的所有权。您需要根据您的具体情况接受并修改它。您还需要确定如何以满足用户需求的方式呈现它。

ls C:\* -rec | %{if($_.GetAccessControl().Owner -like '*USERNAME*'){'{0} - {1}' -f $_.Name, $_.Getaccesscontrol().owner}}

在这里,它更加脚本化,更少单行(我喜欢编造文字)以及快速而肮脏的显示。它将从您为其提供的任何搜索根递归搜索当前登录用户拥有的文件。

$result = @()
$user = '*{0}*' -f $env:USERNAME
$searchRoot = 'G:\'
$files = Get-ChildItem $searchRoot -recurse | Where-Object{$_.GetAccessControl().Owner -like $user}
foreach ($file in $files){
    $temp = New-Object PSCustomObject -Prop @{'Name' = $file.Name;
                                              'Path' = $file.Directory;
                                              'Owner' = $file.GetAccessControl().Owner
    }
    $result += $temp
}
$result | Out-GridView
于 2012-12-05T18:47:08.533 回答