2017-05-12 22 views
0
Import-Module ActiveDirectory 
Get-ADUser -SearchBase "OU=CompanySite,DC=example,DC=domain,DC=com" -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "SamAccountName","msDS-UserPasswordExpiryTimeComputed", "Department", "Title", "Manager" | 
    Select-Object -Property "SamAccountName", @{Name="Password Expiry Date"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}; @{Label="Manager";Expression={(Get-aduser -filter {sAMAccountName -eq $_.Manager}.sAMAaccountName)}};# | 
    Export-Csv "C:\Update\PasswordExpired.csv" -NoTypeInformation 

我想獲得一個CSV,其中包含的員工的密碼過期,並獲得他們的經理姓名,僱員職稱,僱員姓名和日期密碼將過期。如何從powershell獲得更多的數據從Get-ADuser

但是,當我運行這個,我得到的員工姓名和日期密碼過期。沒有其他領域。我不明白,我錯在哪裏

回答

1

好,有導致問題的幾個誤區:

  1. 你有一個分號;在選擇對象部分的密碼到期日期屬性後()。這導致代碼在該點終止。它應該是一個逗號。
  2. 對於Manager屬性,您的表達式不正確。 SamAccountName後面有您的結束圓括號。它應該在這個時期之前。此外,您正試圖將DN與SamAccountName數據進行匹配,因此它將不會返回任何內容。只需執行Get-ADUser並將身份設置爲$ _。Manager輸出即可。從那裏你可以使用圓括號從經理的完整ADUser對象中輸出你想要的任何元數據。您可以將SamAccountName換成DisplayName或其他。

    Your code: (Get-ADUser -filter {SamAccountName-eq $_.Manager}.SamAccountName) 
    Correct code: (Get-ADUser $_.Manager).SamAccountName 
    
  3. 標題和名稱不包括在內,因爲您沒有在選擇對象代碼中調用它們。 Get-ADUser的「-Properties」部分僅將屬性添加到檢索的屬性列表中。您在「選擇」中設置的內容是輸出到屏幕或文件的內容。

  4. 您在Export-CSV部分之前有一個註釋(#)標記,因此它也沒有運行。

這是代碼。我的AD中沒有管理員屬性,因此我無法驗證該部分,但其餘部分運行正常。我也使它更容易運輸。 SearchBase現在在變量中指定,因爲文件的導出位置也是如此。此外,您不需要在-Properties部分中指定SamAccountName,因爲這是Get-ADUser的默認屬性。

Import-Module ActiveDirectory 
    $SearchPath = "OU=CompanySite,DC=example,DC=domain,DC=com" 
    $ExportPath = 'C:\Update\PasswordExpired.csv' 

    $Users = Get-ADUser -SearchBase $SearchPath -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "msDS-UserPasswordExpiryTimeComputed", "Department", "Title", "Manager" 
    $Users | Select-Object -Property Name,"SamAccountName",Title,@{Name="Password Expiry Date"; Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}},@{Label="Manager";Expression={(Get-ADUser $_.Manager).sAMaccountName}} | Export-Csv $ExportPath -NoTypeInformation 
+0

我們在AD的用戶管理員,但該字段不填充o出口 –

+0

好吧,我已經更新了代碼。沒有管理人員的數據,我不知道什麼是錯的。這是你對修正的看法。 您的代碼:(GET-ADUser便有-filter {SAM帳戶當量$ _經理} .SamaAccountName)#NOTE你SAM帳戶拼錯 正確的代碼:(GET-ADUser便有$ _經理).sAMaccountName 經理代碼提供經理的DN。您可以使用$ _。Manager值執行get-aduser,然後獲得完整的AD用戶對象,然後您可以選擇獲取SamAccountName或DisplayName或任何您想要的。 –