2012-11-05 41 views
2

我有以下一段代碼,可以正常工作以輸出AD的用戶顯示名和accountExpires屬性。我在工作中運行他們的命令行,因爲限制模式:在powershell命令行中將accountExpires轉換爲DateTime(最後一步,需要幫助)

$objSearch.findall() | %{" " + $_.properties.displayname + "| " + $_.properties.accountexpires} 

現在我需要這個輸出轉換,特別是accountExpires歸因於力所能及可讀的日期。 谷歌搜索後,我想我可以使用像下面這樣的東西在accountExpires和日期時間之間進行轉換。

[datetime]::fromfiletime(129138320987173880) 

但我遇到了兩個問題相結合的問題。我試過如下:

$objSearch.findall() | %{" "+ $_.properties.displayname + " " + [datetime]::fromfiletime($_.properties.accountexpires)} 

無法轉換參數「0」,與價值:「System.DirectoryServices.ResultPropertyValueCollection」,爲「FromFileTime」輸入「System.Int64」:「不能轉換」的System.DirectoryServices .ResultPropertyValueCollection「類型爲」System.DirectoryServices.ResultPropertyValueCollection「的值鍵入」System.Int64「。」 在線:1 char:96 + $ objSearch.findall()| %{ 「 」+ $ .properties.displayname +「」 + [日期時間] :: fromfiletime < < < <($ .properties.accountexpires)} + CategoryInfo:NotSpecified:(:) [],MethodException + FullyQualifiedErrorId :MethodArgumentConversionInvalidCastArgument

$objSearch.findall() | %{" "+ $_.properties.displayname + " " + [datetime]::fromfiletime $_.properties.accountexpires} 

在表達式或語句的意外標記 ''。 在線:1 char:99 + $ objSearch.findall()| %{ 「這是 」+ $ .properties.displayname +「」 + [日期時間] :: fromfiletime $ _ < < < < .properties.accountexpires} + CategoryInfo:ParserError:(_:字符串)[],ParentContainsErrorRecordException + FullyQualifiedErrorId:UnexpectedToken

如何將accountExpires轉換爲人類可讀的日期?

回答

1

你只是想念底層的ADSI COM對象呈現屬性作爲數組,這裏是獲取accountexpires屬性的方法,只需使用$_.properties.accountexpires[0]即可。

$search = [ADSISearcher]"OU=MonOu,DC=dom,DC=fr" 
$search.Filter = "(cn=Jean Paul Blanc)" 
$user = $search.FindOne() 
$user | %{" "+ $_.properties.displayname + " " + [datetime]::fromfiletime($_.properties.accountexpires[0])} 

這給我:

Jean Paul Blanc 12/07/2012 00:00:00 
+0

完美 - 這工作非常出色。非常感謝你! – Anoop