从LastLogonDate中仅提取日期部分

Sea*_*guy 1 powershell automation

我希望能够从此Get-ADUser命令的输出中隔离日期:

Get-ADUser -identity johnd -properties LastLogonDate | Select-Object name, LastLogonDate
Run Code Online (Sandbox Code Playgroud)

结果如下:

name                                                        LastLogonDate
----                                                        -------------
John Doe                                                3/21/2016 10:01:36 AM
Run Code Online (Sandbox Code Playgroud)

我希望能够删除所有文本,只留下日期:

3/21/2016
Run Code Online (Sandbox Code Playgroud)

我已经尝试将这个拆分过滤器添加到上面命令的末尾,这与unix中的awk类似.(#2关闭,仅举例)

%{ $_.Split(',')[2]; }
Run Code Online (Sandbox Code Playgroud)

导致此错误:

[Microsoft.ActiveDirectory.Management.ADUser] doesn't contain a method named 'Split'
Run Code Online (Sandbox Code Playgroud)

bri*_*ist 5

该cmdlet的结果是具有一组属性的对象.您在表格格式中看到的输出不是对象中包含的输出; 它是它的显示表示.

因此,要首先获取日期对象,您可以修改您的Select-Object调用(已经在削减属性),如下所示:

$lastLogon = Get-ADUser -identity johnd -properties LastLogonDate | 
    Select-Object -ExpandProperty LastLogonDate
Run Code Online (Sandbox Code Playgroud)

$lastLogon现在包含一个[DateTime]对象.

有了它,您可以使用格式字符串格式化它:

$lastLogon.ToString('MM/dd/yyyy')
Run Code Online (Sandbox Code Playgroud)

甚至更好:

$lastLogon.ToShortDateString()
Run Code Online (Sandbox Code Playgroud)

(这些是略有不同的表示;后者不是零填充).

格式字符串使您可以完全控制表示.