尝试导出使用Windows PowerShell Active Directory模块的用户的CSV列表

所以下面是我到目前为止:

import-module activedirectory $domain = "ourdomain" Get-ADUser -Filter {enabled -eq $true} -Properties whenCreated,EmailAddress,CanonicalName | select-object Name,EmailAddress,CanonicalName,whenCreated | export-csv C:\Data\test.csv 

不幸的是,当我运行上述我在CSV中得到两种不同格式的date,例如:

  • 2017年1月1日
  • 1/01/2017 8:35:56 PM

这个问题构成的问题是没有一个干净的方法来sorting它们。 Excel的格式不会将这些格式中的任何一种更改为更像另一种格式,这是因为包含时间而不是其他格式,并且因为包含时间的格式不使用单个数字中的尾随零,但时间排他的格式呢。

我们有一个现有的脚本来捕获用户使用LastLogonTimestamp属性,通过将底线改为:

 select-object Name,EmailAddress,CanonicalName,@{Name="Timestamp"; Expression={[DateTime]::FromFileTime($_.whenCreated).ToString('yyyy-MM-dd_hh:mm:ss')}} 

出于某种原因,当我们查询LastLogonTimestamp属性时,这个expression式运行正常,但是当我们运行这个版本查询whenCreated属性时,我们得到了Timestamp头下的一个完全空白的列。

我对PowerShell本身并不是很了解,而且我的同事find了LastLogonTimestamp的原始脚本,只是在网上发现它,并尽可能最小化地调整它以使其适用于我们,所以我不知道这个东西行可以正常使用这些属性之一,而不是其他。 对我来说这似乎很奇怪,虽然在同一个程序中使用date的两个属性会以不同的格式存储它们,所以我不相信那就是了。

在任何情况下,任何人可以提供帮助我们在这个脚本的输出中获得一个统一的date格式的帮助将不胜感激 – 它不需要有时间,如果它更容易取消,但如果他们同样容易,我们可以保留它。

whencreated已经是一个[DateTime] 。 当你运行这样的东西时注意属性之间的区别:

 Get-ADUser TestUser -Properties lastlogon,whenCreated | select lastlogon,whenCreated | fl (Get-ADUser TestUser -Properties lastlogon).lastlogon | gm (Get-ADUser TestUser -Properties whenCreated).whenCreated | gm 

这意味着在运行toString()方法之前,您不必转换为DateTime

 select-object @{Name="Timestamp"; Expression={$_.whenCreated.ToString('yyyy-MM-dd_hh:mm:ss')}}