Powershell 仅从LastLogonData提取日期部分

Powershell 仅从LastLogonData提取日期部分,powershell,automation,Powershell,Automation,我希望能够从Get ADUser命令的输出中隔离日期: Get-ADUser -identity johnd -properties LastLogonDate | Select-Object name, LastLogonDate 其结果是: name LastLogonDate ----

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

Get-ADUser -identity johnd -properties LastLogonDate | Select-Object name, LastLogonDate
其结果是:

name                                                        LastLogonDate
----                                                        -------------
John Doe                                                3/21/2016 10:01:36 AM
我希望能够删除所有文本,只留下日期:

3/21/2016
我已尝试将此拆分筛选器添加到上述命令的末尾,这类似于unix中的awk。(#2关闭,仅举个例子)

导致此错误的原因:

[Microsoft.ActiveDirectory.Management.ADUser] doesn't contain a method named 'Split'

你会使用变量吗?如果是,

PS>$hi=Get-ADuser -identity johnd -properties LastLogonDate|select-object name,LastLogonDate
PS>$hi.LastLogonDate.ToShortDateString()
3/21/2016
PS>$hi.name
John Doe

你会使用变量吗?如果是,

PS>$hi=Get-ADuser -identity johnd -properties LastLogonDate|select-object name,LastLogonDate
PS>$hi.LastLogonDate.ToShortDateString()
3/21/2016
PS>$hi.name
John Doe

该cmdlet的结果是一个具有一组属性的对象。您在表格格式中看到的输出不是对象中所包含的内容;这是它的一种显示形式

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

$lastLogon = Get-ADUser -identity johnd -properties LastLogonDate | 
    Select-Object -ExpandProperty LastLogonDate
$lastLogon
现在包含一个

使用此选项,您可以使用以下方式对其进行格式化:

或者更好:

$lastLogon.ToShortDateString()
(这些表示略有不同;后者没有零填充)


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

该cmdlet的结果是一个具有一组属性的对象。您在表格格式中看到的输出不是对象中所包含的内容;这是它的一种显示形式

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

$lastLogon = Get-ADUser -identity johnd -properties LastLogonDate | 
    Select-Object -ExpandProperty LastLogonDate
$lastLogon
现在包含一个

使用此选项,您可以使用以下方式对其进行格式化:

或者更好:

$lastLogon.ToShortDateString()
(这些表示略有不同;后者没有零填充)


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

这很难,更重要的是:

Get-ADUser -SearchBase 'OU=Users,OU=Home,DC=Domain,DC=local' -filter {Enabled -eq $True} -Properties * | 
ForEach-Object {$_.whenChanged.ToShortDateString() + ',' + $_.SamAccountName}

这是一条艰难的道路,更为艰难的道路是:

Get-ADUser -SearchBase 'OU=Users,OU=Home,DC=Domain,DC=local' -filter {Enabled -eq $True} -Properties * | 
ForEach-Object {$_.whenChanged.ToShortDateString() + ',' + $_.SamAccountName}

又抓到我了。不要在你不需要的时候做字符串操作,这是这里的信息。非常感谢Briantist-这看起来就是我要找的!我真的很感谢你的帮助!又抓到我了。不要在你不需要的时候做字符串操作,这是这里的信息。非常感谢Briantist-这看起来就是我要找的!我真的很感谢你的帮助!这似乎是一种获取信息的尴尬方式。查看briantist的答案,了解另一种方法获取信息(名称和LastLogonDate的单个AD查询)作为一个命令更好。我同意我最初构建日期字符串的尝试是笨拙的。给Briantist一个ToSortDateString()方法的分数。@LinuxNP,很容易出错。这也是一种很好的方法,+1这似乎是一种获取此信息的尴尬方式。查看briantist的答案,了解另一种方法获取信息(名称和LastLogonDate的单个AD查询)作为一个命令更好。我同意我最初构建日期字符串的尝试是笨拙的。给Briantist一个ToSortDateString()方法的分数。@LinuxNP,很容易出错。这也是一个很好的方法,+1