PowerShell итерировать всех пользователей и отображать последние файлы LNK - PullRequest
0 голосов
/ 01 июля 2019

Выполните итерации всех окон $users и отобразите последние файлы .lnk по определенному пути!

Я попытался импортировать этот модуль - https://gist.github.com/picheljitsu/cc2ed99cbae7caad3abb0928cd8a286b

Get-RecentFiles, и я хочуитерация с $ users после получения пользователей с помощью get-localuser

$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 Ответ

1 голос
/ 01 июля 2019

Результатом Get-LocalUser | Select-Object Name является массив пользователей. Когда вы передаете этот массив в конвейер, он «разворачивает» свои элементы и передает их по одному, и этот элемент будет объявлен как $_ переменная.

Передача массивов в конвейер

Если функция возвращает более одного значения, PowerShell упаковывает их в массив. Однако, если вы передадите результаты другой функции внутри конвейера, конвейер автоматически "развернет" массив и обработает по одному элементу массива за раз.

ExpandProperty параметр используется для преобразования свойства объекта Name в строку для использования в функции Get-RecentFiles.

Измените свой код и попробуйте это:

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

Update Приведенный выше код получит некоторые ошибки для отключенных пользователей (например, администратор, гость). Чтобы решить эту проблему, вам нужно только включить включенных пользователей следующим образом:

Get-LocalUser | Where-Object Enabled | Select-Object -ExpandProperty Name | Foreach-Object {Get-RecentFiles $_}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...