2014-07-08 26 views
1

初學者在這裏。 如何修改此腳本以列出特定用戶擁有的文件,而不是列出每個文件。例如,我只想查看用戶john doe擁有的文件。由特定所有者的Powershell列表文件

Set-StrictMode -Version Latest $files = Get-ChildItem foreach($file in $files) {$owner=(Get-Acl $file).Owner $file | Add-Member NoteProperty Owner $owner $file} 

非常感謝您的幫助。

回答

1

嘗試這樣:

$files = Get-ChildItem | Select *,@{n='Owner';e={(Get-Acl $_).Owner}} | 
      Where {!$_.PSIsContainer -and ($_.Owner -eq 'Domain\name')} 

在V3可以簡化這:

$files = Get-ChildItem -File | Select *,@{n='Owner';e={(Get-Acl $_).Owner}} | 
      Where {$_.Owner -eq 'Domain\name'} 
0

這可能會更快:

$Owner = 'user1' 
$SID = (Get-ADUser $Owner).sid 

Get-ChildItem | 
where { (Get-Acl $_).sddl -like "O:$SID*" } | 
select *,@{l='Owner';e={$Owner}} 

的ACL存儲爲SDDL串。文件所有者的SID始終位於SDDL字符串的開頭,以O:爲前綴。 NTFS必須將SID解析爲所有者名稱。與SID進行字符串匹配相比,執行查找並匹配名稱需要更少的時間。它並不是很多,只是製作一個文件或10個文件不會有太大的區別,但是當你開始製作數千個文件時,它開始累加起來。

相關問題