我希望能够将此日期与此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关闭,仅举例)
%{ $_.Split(',')[2]; }
导致此错误:
[Microsoft.ActiveDirectory.Management.ADUser] doesn't contain a method named 'Split'
答案 0 :(得分:5)
该cmdlet的结果是具有一组属性的对象。您在表格格式中看到的输出不是对象中包含的输出;它是它的显示表示。
因此,要首先获取日期对象,您可以修改Select-Object
调用(已经在削减属性),如下所示:
$lastLogon = Get-ADUser -identity johnd -properties LastLogonDate |
Select-Object -ExpandProperty LastLogonDate
$lastLogon
现在包含[DateTime]
object。
您可以使用format strings格式化它:
$lastLogon.ToString('MM/dd/yyyy')
甚至更好:
$lastLogon.ToShortDateString()
(这些是略有不同的表示;后者不是零填充)。
格式字符串使您可以完全控制表示。
答案 1 :(得分:1)
你能用变量吗?如果是的话,
PS>$hi=Get-ADuser -identity johnd -properties LastLogonDate|select-object name,LastLogonDate
PS>$hi.LastLogonDate.ToShortDateString()
3/21/2016
PS>$hi.name
John Doe
答案 2 :(得分:0)
我不难,更简单的方法是:
Get-ADUser -SearchBase 'OU=Users,OU=Home,DC=Domain,DC=local' -filter {Enabled -eq $True} -Properties * |
ForEach-Object {$_.whenChanged.ToShortDateString() + ',' + $_.SamAccountName}