2017-10-19 40 views
0

我正在創建顯示所有者,文件路徑,創建時間,上次寫入時間和上次訪問時間的位置中的所有文件的列表。我也想將用戶的OU組從AD添加到列表中。我怎樣才能合併?這裏是我的代碼:根據創建的文件獲取用戶的OU組

$Path = "C:\Users\Mark\Documents" 
$MyFile = "C:\Test.csv" 
Get-ChildItem $Path -Recurse | Select-Object @{N='Owner';E={$_.GetAccessControl().Owner}}, FullName, CreationTime, LastWriteTime, LastAccessTime | Export-Csv $MyFile 

回答

1

更新Select-Object包括

@{N='OU';E={Get-ADUser -Identity ($_.GetAccessControl().Owner) -Properties Canonicalname | select -ExpandProperty Canonicalname}} 

CanonicalName屬性爲您提供了路徑,用戶如:domain.com/Users/James,另一種方法是使用DistinguishedName將返回CN=James,CN=Users,DC=domain,DC=com

+0

正是我在想什麼。在我的代碼類似於SteloNLD的迴應之前,我意識到我過於複雜了。縮短到一個班輪。此代碼在添加到我的程序時不會檢索任何數據,但它確實使我處於正確的軌道上。謝謝你,先生! – MarkFro

0

我不知道你對OU組的意思,但是如果你的意思是OU,那麼嘗試使用類似下面的代碼的東西,你可以添加其他的東西。

#Settings 
$Path = "$($env:USERPROFILE)\Documents" 
$OutputFile = Join-Path $Path "test.csv" 

#Vars 
$Files = Get-ChildItem $Path -Recurse 
$Export = @() 

#Loop 
Foreach ($File in $Files) { 
    $Owner = $File.GetAccessControl().Owner 

    $ADUser = Get-ADUser ($Owner -replace ".*\\", "") -Properties mail, department, Canonicalname   

    $Export += $File | Select-Object @{N='Owner';E={$_.GetAccessControl().Owner}}, ` 
             @{N='Owner-FullName';E={$ADUser.Name}}, ` 
             @{N='Owner-Department';E={$ADUser.Derparmtent}}, ` 
             @{N='Owner-OU';E={($ADUser.Canonicalname -split '/')[((($ADUser.Canonicalname -split '/').count)-2)]}}, ` 
             @{N='Owner-Mail';E={$ADUser.Mail}}, ` 
             FullName, CreationTime, LastWriteTime, LastAccessTime  
} 

#Export 
$Export | Export-Csv $OutputFile -NoTypeInformation -Delimiter ";"