4

ADからユーザーのdisplaynameとaccountExpires属性を出力するために正常に機能する次のコードがあります。動作が制限されているため、コマンドラインで実行しています。

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

次に、この出力、具体的にはaccountExpires属性を人間が読み取れる日付に変換する必要があります。グーグルした後、次のようなものを使用して、accountExpiresとdatetimeの間で変換できることがわかりました。

[datetime]::fromfiletime(129138320987173880)

しかし、私は2つを組み合わせるのに問題があります。私は次のことを試しました:

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

「FromFileTime」の引数「0」を値「System.DirectoryServices.ResultPropertyValueCollection」で「System.Int64」タイプに変換できません:「「System.DirectoryServices.ResultPropertyValueCollection」値を「System.DirectoryServices.ResultPropertyValueCollection」タイプに変換できません「「System.Int64」と入力します。」行:1 char:96 + $ objSearch.findall()| %{"" + $ .properties.displayname + "" + [datetime] :: fromfiletime <<<<($ .properties.accountexpires)} + CategoryInfo:NotSpecified:(:) []、MethodException + FullyQualifiedErrorId:MethodArgumentConversionInvalidCastArgument

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

式またはステートメントの予期しないトークン' '。行:1 char:99 + $ objSearch.findall()| %{"これは" + $ .properties.displayname + "" + [datetime] :: fromfiletime $ _ <<<< .properties.accountexpires} + CategoryInfo:ParserError:(_:String)[]、ParentContainsErrorRecordException + FullyQualifiedErrorId: UnexpectedToken

accountExpiresを人間が読める日付に変換するにはどうすればよいですか?

4

1 に答える 1

3

基礎となる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
于 2012-11-06T04:56:24.507 に答える