2016-10-20 6 views
0

Мы хотим добавить пару полей даты в нашу схему Active Directory в 2008 R2, чтобы облегчить небольшую автоматизацию. В частности, добавление в поле hireDate, которое автоматически заполняется из импорта.Использование обобщенного времени в настраиваемом поле

Это все работает как ожидается в нашей тестовой среде, однако мне любопытно, есть ли способ улучшить отображение этого настраиваемого атрибута, когда дело доходит до дат.

hireDate поле устанавливается как Синтаксис из Обобщенные времени, чтобы соответствовать родные поля, такие как whenCreated.

Однако при размещении даты, чтобы hireDate, форматирует это сильно отличается от whenCreated для отображения

> $user = Get-ADUser MyUser -Properties whenCreated,hireDate 
> $user 

-- snip -- 
hireDate   : {19870301070000.0Z} 
whenCreated  : 8/28/2014 12:24:42 PM 

Если я проверить MemberType этих свойств, они тоже разные, даже если они как Обобщенные Time

$user | Get-Member -MemberType Properties 

    TypeName: Microsoft.ActiveDirectory.Management.ADUser 

Name    MemberType Definition 
----    ---------- ---------- 
hireDate   Property Microsoft.ActiveDirectory.Management.ADPropertyValueCollection hireDate {get;set;} 
whenCreated  Property System.DateTime whenCreated {get;} 

есть ли правильный способ создать пользовательский атрибут как DateTime или ограничены ли мы способ создания этих атрибутов?

ответ

1

hireDate - это коллекция. Чтобы получить актуальное значение, вам необходимо .hireDate[0] или .hireDate | Select-Object -First 1. И если PowerShell не анализирует временную метку «Обобщение времени» для вас (hireDate не является стандартным атрибутом, то в конце концов) вам нужно do it yourself.

$fmt = "yyyyMMddHHmmss.f'Z'" 
$culture = [Globalization.CultureInfo]::InvariantCulture 

Get-ADUser MyUser -Properties whenCreated,hireDate | 
    Select-Object -Property *, @{n='hireDate';e={ 
    [DateTime]::ParseExact($_.hireDate[0], $fmt, $culture) 
    }} -Exclude hireDate 
+0

Я надеялся избежать всех преобразований. Несмотря на то, что атрибут является однозначным, он по-прежнему отображается как коллекция. В этот момент я мог бы также использовать существующий атрибут расширения строки и преобразовать его в дату-время, чтобы он был, по крайней мере, доступен для чтения сразу – Kirk