Получить объявление пользователя Дата создания - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь экспортировать различные пользовательские данные, но у меня возникают проблемы с "созданной датой", которую я использую:

Get-ADUser -Filter * –Properties DisplayName, givenName, sn, SamAccountName, Enabled, lastLogonTimestamp, whenCreated |
Select DisplayName, givenName, sn, SamAccountName, Enabled,
    @{n="lastLogonDate";e={get-date ([datetime]::FromFileTime($_.lastLogonTimestamp)) -f MM/dd/yyyy}},
    @{n="Created";e={get-date ([datetime]::FromFileTime($_.whenCreated)) -f MM/dd/yyyy}}| 
Export-CSV -NoType .\usrtst01.csv

Но экспорт идет так:

«Пользовательский тест», «Пользователь», «тест», «user.test», «True», «04/01/2020»,

Однако, если я использую код, подобный этому:

Get-ADUser -Filter * –Properties DisplayName, givenName, sn, SamAccountName, Enabled, lastLogonTimestamp, whenCreated |
Select DisplayName, givenName, sn, SamAccountName, Enabled,
    @{n="lastLogonDate";e={get-date ([datetime]::FromFileTime($_.lastLogonTimestamp)) -f MM/dd/yyyy}}, whenCreated | 
Export-CSV -NoType .\usrtst02.csv

Экспорт:

"Тест пользователя", "Пользователь", "тест", "user.test", "True", "04/01/2020", " 04.01.2020 8:28:31 "

Проблема в том, что мне нужен формат:

ММ / дд / гггг

Не могли бы вы помочь, пожалуйста.

Спасибо.

1 Ответ

1 голос
/ 02 апреля 2020

lastLogonTimestamp и whenCreated имеют два разных типа данных.

lastLogonTimestamp представляется как большое целое число, считая тики из 1.1.1601, следовательно, вы должны конвертировать его. Вы делаете это с [datetime]::FromFileTime().

whenCreated, напротив, это формат даты, который Get-Date, но [datetime]::FromFileTime() не может его обработать. Если вы вызываете только эту строку, это не работает для вас, как ожидалось, вы получите правильную ошибку.

get-date ([datetime]::FromFileTime("01/04/2020 8:28:31 AM")) -f MM/dd/yyyy

Cannot convert argument "fileTime", with value: "01/04/2020 8:28:31 AM", for "FromFileTime" to type "System.Int64": "Cannot convert value "01/04/2020 8:28:31 AM" to
type "System.Int64". Error: "Input string was not in a correct format.""

Это именно то, что нарушает вашу команду и оставляет строку вывода пустой.

Просто удалите [datetime]::FromFileTime() и все будет хорошо go.

get-date ("01/04/2020 8:28:31 AM") -f MM/dd/yyyy
...