在用户创建的窗口上查找文件

时间:2012-12-05 17:13:58

标签: python .net windows powershell

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

我们有一个文件hard disk management tool ,所以我可以针对工具的数据库编写存储过程并返回其中包含的数据,但这种方法有一些缺点:

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

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

接下来最好的是一个罐头工具 - 想到任何工具?

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

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

有什么建议吗? TIA。

1 个答案:

答案 0 :(得分: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