powershell迭代所有用户并显示最近的lnk文件

时间:2019-07-01 10:35:56

标签: powershell

遍历所有窗口$users,并显示来自特定路径的最新.lnk文件!

我尝试导入此模块-https://gist.github.com/picheljitsu/cc2ed99cbae7caad3abb0928cd8a286b

Get-RecentFiles,在使用get-localuser获取用户后,我想用$ users进行迭代

$user = (Get-LocalUser | Select-Object Name) |
        ForEach-Object  { Get-RecentFiles $user }

应显示所有用户最近目录的最新文件。

Directory: C:\Users\admin\AppData\Roaming\Microsoft\Windows\Recent


Mode                LastWriteTime         Length Name                                           
----                -------------         ------ ----                                           
d-----        6/30/2019   6:59 PM                AutomaticDestinations                          
d-----         7/1/2019   3:21 PM                CustomDestinations    

 Directory: C:\Users\user2\AppData\Roaming\Microsoft\Windows\Recent


Mode                LastWriteTime         Length Name                                           
----                -------------         ------ ----                                           
d-----        6/30/2019   6:59 PM                AutomaticDestinations                          
d-----         7/1/2019   3:21 PM                CustomDestinations

1 个答案:

答案 0 :(得分:1)

Get-LocalUser | Select-Object Name的结果是一组用户。当您将此数组传递到管道时,它将“解包”其项并一次传递一个,该项将被声明为$_变量。

  

Passing Arrays to Pipeline

     

如果一个函数返回多个值,PowerShell会将它们包装在一个数组中。但是,如果将结果传递给管道内的另一个函数,则管道会自动“解包”数组并一次处理一个数组元素。

ExpandProperty参数用于将对象属性Name转换为要在Get-RecentFiles函数中使用的字符串。

修改您的代码,然后尝试以下操作:

Get-LocalUser | Select-Object -ExpandProperty Name | Foreach-Object {Get-RecentFiles $_}

更新 对于禁用的用户(例如:管理员,访客),上面的代码会出现一些错误。要解决此问题,您只需按以下方式获取已启用的用户:

Get-LocalUser | Where-Object Enabled | Select-Object -ExpandProperty Name | Foreach-Object {Get-RecentFiles $_}