Результатом 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 $_}