0

这篇使用 get-childitem 查找最后登录用户的帖子非常有帮助,Powershell - 最后登录用户 - 相同的输入,不同的输出

但是,我遇到了一些问题。

我正在编写以下命令:

Get-Childitem c:\users\*\ntuser.dat -force | select-object -last 1 {(Split-path $_.directory -leaf)},last* | sort lastwritetime -descending 

它以形式给出输出

(Split-path $_.directory -leaf) : jjoe
LastAccessTime                  : 10/10/2013 11:37:14 AM
LastAccessTimeUtc               : 10/10/2013 3:37:14 PM
LastWriteTime                   : 10/10/2013 1:51:02 PM
LastWriteTimeUtc                : 10/10/2013 5:51:02 PM

如何使这个输出 jjoe 而不是所有这些行?

我试过

$abc = Get-Childitem c:\users\*\ntuser.dat -force | select-object -last 1 {(Split-path $_.directory -leaf)},last* | sort lastwritetime -descending 

$abc.(Split-path $_.directory -leaf)

但它不起作用。

谢谢!

4

2 回答 2

2

替换这个:

{(Split-path $_.directory -leaf)},last*

有了这个:

@{ n='Username'; e={ Split-path $_.directory -leaf } },last*

然后在管道上命名该属性,然后您可以执行以下操作:

<your script> | Select -Expand UserName

说明: @{Name=$StringVaue; Expression=$ScriptBlock}是如何添加Calculated PropertiesSelect-Object. 简写@{n=$StringValue; e=$ScriptBlock}

于 2013-10-10T18:58:25.397 回答
1

您也可以不使用Split-Path. Directory 属性是一个 System.IO.DirectoryInfo 对象,因此您可以获得它的 name 属性:

... @{n='Username'; e={$_.Directory.Name }}
于 2013-10-11T08:14:32.227 回答