2014-11-14 92 views
0

爲什麼當我將其導出到csv文件時,passwordlastset屬性中的所有機器都會顯示空白?其他一切都很完美。powershell passwordlastset導出到電子表格

$Searcher = New-ObjectSystem.DirectoryServices.DirectorySearcher([ADSI]"LDAP://dc=amers,dc=jhe,dc=domain,dc=com") 

$Searcher.Filter = "(&(objectCategory=computer)(objectClass=computer)(!UserAccountControl:1.2.840.113556.1.4.803:=2)(operatingSystem=Windows XP*))" 

$Searcher.PageSize = 100000 

$results = $Searcher.Findall() 

$results | ForEach-Object { $_.GetDirectoryEntry() } | 
select @{ n = 'CN'; e = { ($_.CN) } }, 
    @{ n = 'DistinguishedName'; e = { $_.DistinguishedName } }, 
    @{ n = 'extensionattribute7'; e = { $_.extensionattribute7 } }, 
    @{ n = 'LastLogon'; e = { [DateTime]::FromFileTime($_.PasswordLastSet) } }, 
    @{ n = 'OperatingSystem'; e = { $_.OperatingSystem } } | 
Export-Csv 'C:\temp\WindowsXP_Only.csv' -NoType -Force 
+0

你是如何將數據傳輸到'$ results'? – alroc 2014-11-14 15:11:24

+0

我已經更新了代碼。 @alroc – NobleMan 2014-11-14 15:40:11

+1

在調用FindAll()之前嘗試'$ Searcher.SearchScope ='Subtree''。可能還有'$ Searcher.SearchBase = [ADSI]「LDAP:// dc = amers,dc = jhe,dc = domain,dc = com」'。 – 2014-11-14 15:47:45

回答

1

默認情況下,不會返回所有屬性,因此您需要指定所需的其他屬性。另外,如果您要查找最後一次登錄日期(根據您的輸出),則應該使用lastLogonTimestamp而不是PasswordLastSet

下面是一個使用Get-ADComputer的例子,我非常喜歡使用舊的AD搜索方法。當您對結果滿意時,只需添加Export-CSV即可。

$results = get-adcomputer -Filter "operatingSystem -like 'Windows XP*'" -properties cn,lastlogontimestamp,operatingsystem,extensionattribute7,PasswordLastSet -searchbase "dc=amers,dc=jhe,dc=domain,dc=com"; 
$results | 
select @{ n = 'CN'; e = { ($_.cn) } }, 
    @{ n = 'DistinguishedName'; e = { $_.DistinguishedName } }, 
    @{ n = 'extensionattribute7'; e = { $_.extensionattribute7 } }, 
    @{ n = 'LastLogon'; e = { [DateTime]::FromFileTime($_.lastLogonTimestamp) } }, 
    @{ n = 'PasswordLastSet'; e = { [DateTime]::FromFileTime($_.PasswordLastSet) } }, 
    @{ n = 'OperatingSystem'; e = { $_.OperatingSystem } } 

您可能還會發現this script useful

+0

感謝信息反應alroc。 – NobleMan 2014-11-15 00:00:52

相關問題