2014-11-14 76 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

相关问题