トップ回答者
Powershellで取得した日付が文字列結合するとアメリカ形式になってしまうのを防ぎたい

質問
-
以下スクリプトを実行し、ADからユーザの一覧を取得し、分析をしたいと考えています。
プロパティの内、最終ログイン日付(lastlogonDate)がアメリカ形式(mm/dd/yyyy hh:MM:ss)になってしまう為、分析がしずらい状態です。
ただし、結合せずにそのまま出力する分には日本形式で出力される為、変換等は不要な気もしています。
日付をyyyy/mm/dd hh:MM:ss形式でファイルに出力させる方法はないでしょうか。
ご教示よろしくお願い致します。
Get-ADUser -Filter * -Properties `
name, `
displayname, `
lastlogonDate, `
lockedout, `
enabled, `
canonicalName, `
description, `
memberof `
| `
%{ `
$_.name+"%"+`
$_.displayname+"%"+`
$_.lastlogonDate+"%"+`
$_.lockedout+"%"+`
$_.enabled+"%"+`
$_.canonicalName+"%"+`
$_.description+"%"+`
$_.memberof`
} > C:\Users\HogeUser\Desktop\データ一覧.txt
回答
-
文字列(string)に日付時刻(DateTime)を結合すると、DateTimeからstringへの暗黙の型変換が行われます。
PowerShellにおいて、あるオブジェクトから文字列への暗黙の型変換が行われるときには、現在のカルチャ(日本語環境ならja-JP)ではなく、カルチャ非依存な形式を用いて出力します。カルチャ非依存といっても、実際には英語における表記なので、今回の場合もmm/dd/yyyy hh:MM:ssという形式で出力されているわけです。
yyyy/mm/dd hh:MM:ss形式で出力するには、DateTimeを現在のカルチャを用いてstringに変換するようにします。
例えば、
$_.lastlogonDate
を、
$_.lastlogonDate.ToString()
とすると良いでしょう。
DateTime.ToStringメソッドは、引数を与えないと現在のカルチャを用いて文字列化します。- 編集済み 牟田口大介Moderator 2018年9月25日 11:29
- 回答としてマーク ろにん365 2018年9月26日 1:37
すべての返信
-
文字列(string)に日付時刻(DateTime)を結合すると、DateTimeからstringへの暗黙の型変換が行われます。
PowerShellにおいて、あるオブジェクトから文字列への暗黙の型変換が行われるときには、現在のカルチャ(日本語環境ならja-JP)ではなく、カルチャ非依存な形式を用いて出力します。カルチャ非依存といっても、実際には英語における表記なので、今回の場合もmm/dd/yyyy hh:MM:ssという形式で出力されているわけです。
yyyy/mm/dd hh:MM:ss形式で出力するには、DateTimeを現在のカルチャを用いてstringに変換するようにします。
例えば、
$_.lastlogonDate
を、
$_.lastlogonDate.ToString()
とすると良いでしょう。
DateTime.ToStringメソッドは、引数を与えないと現在のカルチャを用いて文字列化します。- 編集済み 牟田口大介Moderator 2018年9月25日 11:29
- 回答としてマーク ろにん365 2018年9月26日 1:37